types

package
v0.0.0-...-6a86319 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 24, 2025 License: Apache-2.0 Imports: 11 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrInvalidLengthAuthorityMetadata        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowAuthorityMetadata          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupAuthorityMetadata = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthParams        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowParams          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupParams = fmt.Errorf("proto: unexpected end of group")
)
View Source
var (
	ErrInvalidLengthTx        = fmt.Errorf("proto: negative length found during unmarshaling")
	ErrIntOverflowTx          = fmt.Errorf("proto: integer overflow")
	ErrUnexpectedEndOfGroupTx = fmt.Errorf("proto: unexpected end of group")
)

Functions

This section is empty.

Types

type DenomAuthorityMetadata

type DenomAuthorityMetadata struct {
	// Can be empty for no admin, or a valid osmosis address
	Admin string `protobuf:"bytes,1,opt,name=admin,proto3" json:"admin,omitempty" yaml:"admin"`
}

DenomAuthorityMetadata specifies metadata for addresses that have specific capabilities over a token factory denom. Right now there is only one Admin permission, but is planned to be extended to the future.

func (*DenomAuthorityMetadata) Descriptor

func (*DenomAuthorityMetadata) Descriptor() ([]byte, []int)

func (*DenomAuthorityMetadata) Equal

func (this *DenomAuthorityMetadata) Equal(that interface{}) bool

func (*DenomAuthorityMetadata) GetAdmin

func (m *DenomAuthorityMetadata) GetAdmin() string

func (*DenomAuthorityMetadata) Marshal

func (m *DenomAuthorityMetadata) Marshal() (dAtA []byte, err error)

func (*DenomAuthorityMetadata) MarshalTo

func (m *DenomAuthorityMetadata) MarshalTo(dAtA []byte) (int, error)

func (*DenomAuthorityMetadata) MarshalToSizedBuffer

func (m *DenomAuthorityMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*DenomAuthorityMetadata) ProtoMessage

func (*DenomAuthorityMetadata) ProtoMessage()

func (*DenomAuthorityMetadata) Reset

func (m *DenomAuthorityMetadata) Reset()

func (*DenomAuthorityMetadata) Size

func (m *DenomAuthorityMetadata) Size() (n int)

func (*DenomAuthorityMetadata) String

func (m *DenomAuthorityMetadata) String() string

func (*DenomAuthorityMetadata) Unmarshal

func (m *DenomAuthorityMetadata) Unmarshal(dAtA []byte) error

func (*DenomAuthorityMetadata) XXX_DiscardUnknown

func (m *DenomAuthorityMetadata) XXX_DiscardUnknown()

func (*DenomAuthorityMetadata) XXX_Marshal

func (m *DenomAuthorityMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*DenomAuthorityMetadata) XXX_Merge

func (m *DenomAuthorityMetadata) XXX_Merge(src proto.Message)

func (*DenomAuthorityMetadata) XXX_Size

func (m *DenomAuthorityMetadata) XXX_Size() int

func (*DenomAuthorityMetadata) XXX_Unmarshal

func (m *DenomAuthorityMetadata) XXX_Unmarshal(b []byte) error

type MsgBurn

type MsgBurn struct {
	Sender          string     `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"`
	Amount          types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"`
	BurnFromAddress string     `protobuf:"bytes,3,opt,name=burnFromAddress,proto3" json:"burnFromAddress,omitempty" yaml:"burn_from_address"`
}

MsgBurn is the sdk.Msg type for allowing an admin account to burn a token. For now, we only support burning from the sender account.

func (*MsgBurn) Descriptor

func (*MsgBurn) Descriptor() ([]byte, []int)

func (*MsgBurn) GetAmount

func (m *MsgBurn) GetAmount() types.Coin

func (*MsgBurn) GetBurnFromAddress

func (m *MsgBurn) GetBurnFromAddress() string

func (*MsgBurn) GetSender

func (m *MsgBurn) GetSender() string

func (MsgBurn) GetSigners

func (msg MsgBurn) GetSigners() []sdk.AccAddress

func (*MsgBurn) Marshal

func (m *MsgBurn) Marshal() (dAtA []byte, err error)

func (*MsgBurn) MarshalTo

func (m *MsgBurn) MarshalTo(dAtA []byte) (int, error)

func (*MsgBurn) MarshalToSizedBuffer

func (m *MsgBurn) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgBurn) ProtoMessage

func (*MsgBurn) ProtoMessage()

func (*MsgBurn) Reset

func (m *MsgBurn) Reset()

func (*MsgBurn) Size

func (m *MsgBurn) Size() (n int)

func (*MsgBurn) String

func (m *MsgBurn) String() string

func (*MsgBurn) Unmarshal

func (m *MsgBurn) Unmarshal(dAtA []byte) error

func (MsgBurn) ValidateBasic

func (msg MsgBurn) ValidateBasic() error

func (*MsgBurn) XXX_DiscardUnknown

func (m *MsgBurn) XXX_DiscardUnknown()

func (*MsgBurn) XXX_Marshal

func (m *MsgBurn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgBurn) XXX_Merge

func (m *MsgBurn) XXX_Merge(src proto.Message)

func (*MsgBurn) XXX_Size

func (m *MsgBurn) XXX_Size() int

func (*MsgBurn) XXX_Unmarshal

func (m *MsgBurn) XXX_Unmarshal(b []byte) error

type MsgChangeAdmin

type MsgChangeAdmin struct {
	Sender   string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"`
	Denom    string `protobuf:"bytes,2,opt,name=denom,proto3" json:"denom,omitempty" yaml:"denom"`
	NewAdmin string `protobuf:"bytes,3,opt,name=new_admin,json=newAdmin,proto3" json:"new_admin,omitempty" yaml:"new_admin"`
}

MsgChangeAdmin is the sdk.Msg type for allowing an admin account to reassign adminship of a denom to a new account

func (*MsgChangeAdmin) Descriptor

func (*MsgChangeAdmin) Descriptor() ([]byte, []int)

func (*MsgChangeAdmin) GetDenom

func (m *MsgChangeAdmin) GetDenom() string

func (*MsgChangeAdmin) GetNewAdmin

func (m *MsgChangeAdmin) GetNewAdmin() string

func (*MsgChangeAdmin) GetSender

func (m *MsgChangeAdmin) GetSender() string

func (MsgChangeAdmin) GetSigners

func (msg MsgChangeAdmin) GetSigners() []sdk.AccAddress

func (*MsgChangeAdmin) Marshal

func (m *MsgChangeAdmin) Marshal() (dAtA []byte, err error)

func (*MsgChangeAdmin) MarshalTo

func (m *MsgChangeAdmin) MarshalTo(dAtA []byte) (int, error)

func (*MsgChangeAdmin) MarshalToSizedBuffer

func (m *MsgChangeAdmin) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgChangeAdmin) ProtoMessage

func (*MsgChangeAdmin) ProtoMessage()

func (*MsgChangeAdmin) Reset

func (m *MsgChangeAdmin) Reset()

func (*MsgChangeAdmin) Size

func (m *MsgChangeAdmin) Size() (n int)

func (*MsgChangeAdmin) String

func (m *MsgChangeAdmin) String() string

func (*MsgChangeAdmin) Unmarshal

func (m *MsgChangeAdmin) Unmarshal(dAtA []byte) error

func (MsgChangeAdmin) ValidateBasic

func (msg MsgChangeAdmin) ValidateBasic() error

func (*MsgChangeAdmin) XXX_DiscardUnknown

func (m *MsgChangeAdmin) XXX_DiscardUnknown()

func (*MsgChangeAdmin) XXX_Marshal

func (m *MsgChangeAdmin) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgChangeAdmin) XXX_Merge

func (m *MsgChangeAdmin) XXX_Merge(src proto.Message)

func (*MsgChangeAdmin) XXX_Size

func (m *MsgChangeAdmin) XXX_Size() int

func (*MsgChangeAdmin) XXX_Unmarshal

func (m *MsgChangeAdmin) XXX_Unmarshal(b []byte) error

type MsgCreateDenom

type MsgCreateDenom struct {
	Sender string `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"`
	// subdenom can be up to 44 "alphanumeric" characters long.
	Subdenom string `protobuf:"bytes,2,opt,name=subdenom,proto3" json:"subdenom,omitempty" yaml:"subdenom"`
}

MsgCreateDenom defines the message structure for the CreateDenom gRPC service method. It allows an account to create a new denom. It requires a sender address and a sub denomination. The (sender_address, sub_denomination) tuple must be unique and cannot be re-used.

The resulting denom created is defined as <factory/{creatorAddress}/{subdenom}>. The resulting denom's admin is originally set to be the creator, but this can be changed later. The token denom does not indicate the current admin.

func (*MsgCreateDenom) Descriptor

func (*MsgCreateDenom) Descriptor() ([]byte, []int)

func (*MsgCreateDenom) GetSender

func (m *MsgCreateDenom) GetSender() string

func (MsgCreateDenom) GetSigners

func (msg MsgCreateDenom) GetSigners() []sdk.AccAddress

func (*MsgCreateDenom) GetSubdenom

func (m *MsgCreateDenom) GetSubdenom() string

func (*MsgCreateDenom) Marshal

func (m *MsgCreateDenom) Marshal() (dAtA []byte, err error)

func (*MsgCreateDenom) MarshalTo

func (m *MsgCreateDenom) MarshalTo(dAtA []byte) (int, error)

func (*MsgCreateDenom) MarshalToSizedBuffer

func (m *MsgCreateDenom) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgCreateDenom) ProtoMessage

func (*MsgCreateDenom) ProtoMessage()

func (*MsgCreateDenom) Reset

func (m *MsgCreateDenom) Reset()

func (*MsgCreateDenom) Size

func (m *MsgCreateDenom) Size() (n int)

func (*MsgCreateDenom) String

func (m *MsgCreateDenom) String() string

func (*MsgCreateDenom) Unmarshal

func (m *MsgCreateDenom) Unmarshal(dAtA []byte) error

func (MsgCreateDenom) ValidateBasic

func (msg MsgCreateDenom) ValidateBasic() error

func (*MsgCreateDenom) XXX_DiscardUnknown

func (m *MsgCreateDenom) XXX_DiscardUnknown()

func (*MsgCreateDenom) XXX_Marshal

func (m *MsgCreateDenom) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgCreateDenom) XXX_Merge

func (m *MsgCreateDenom) XXX_Merge(src proto.Message)

func (*MsgCreateDenom) XXX_Size

func (m *MsgCreateDenom) XXX_Size() int

func (*MsgCreateDenom) XXX_Unmarshal

func (m *MsgCreateDenom) XXX_Unmarshal(b []byte) error

type MsgForceTransfer

type MsgForceTransfer struct {
	Sender              string     `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"`
	Amount              types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"`
	TransferFromAddress string     `protobuf:"bytes,3,opt,name=transferFromAddress,proto3" json:"transferFromAddress,omitempty" yaml:"transfer_from_address"`
	TransferToAddress   string     `protobuf:"bytes,4,opt,name=transferToAddress,proto3" json:"transferToAddress,omitempty" yaml:"transfer_to_address"`
}

func (*MsgForceTransfer) Descriptor

func (*MsgForceTransfer) Descriptor() ([]byte, []int)

func (*MsgForceTransfer) GetAmount

func (m *MsgForceTransfer) GetAmount() types.Coin

func (*MsgForceTransfer) GetSender

func (m *MsgForceTransfer) GetSender() string

func (MsgForceTransfer) GetSigners

func (msg MsgForceTransfer) GetSigners() []sdk.AccAddress

func (*MsgForceTransfer) GetTransferFromAddress

func (m *MsgForceTransfer) GetTransferFromAddress() string

func (*MsgForceTransfer) GetTransferToAddress

func (m *MsgForceTransfer) GetTransferToAddress() string

func (*MsgForceTransfer) Marshal

func (m *MsgForceTransfer) Marshal() (dAtA []byte, err error)

func (*MsgForceTransfer) MarshalTo

func (m *MsgForceTransfer) MarshalTo(dAtA []byte) (int, error)

func (*MsgForceTransfer) MarshalToSizedBuffer

func (m *MsgForceTransfer) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgForceTransfer) ProtoMessage

func (*MsgForceTransfer) ProtoMessage()

func (*MsgForceTransfer) Reset

func (m *MsgForceTransfer) Reset()

func (*MsgForceTransfer) Size

func (m *MsgForceTransfer) Size() (n int)

func (*MsgForceTransfer) String

func (m *MsgForceTransfer) String() string

func (*MsgForceTransfer) Unmarshal

func (m *MsgForceTransfer) Unmarshal(dAtA []byte) error

func (MsgForceTransfer) ValidateBasic

func (msg MsgForceTransfer) ValidateBasic() error

func (*MsgForceTransfer) XXX_DiscardUnknown

func (m *MsgForceTransfer) XXX_DiscardUnknown()

func (*MsgForceTransfer) XXX_Marshal

func (m *MsgForceTransfer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgForceTransfer) XXX_Merge

func (m *MsgForceTransfer) XXX_Merge(src proto.Message)

func (*MsgForceTransfer) XXX_Size

func (m *MsgForceTransfer) XXX_Size() int

func (*MsgForceTransfer) XXX_Unmarshal

func (m *MsgForceTransfer) XXX_Unmarshal(b []byte) error

type MsgMint

type MsgMint struct {
	Sender        string     `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"`
	Amount        types.Coin `protobuf:"bytes,2,opt,name=amount,proto3" json:"amount" yaml:"amount"`
	MintToAddress string     `protobuf:"bytes,3,opt,name=mintToAddress,proto3" json:"mintToAddress,omitempty" yaml:"mint_to_address"`
}

MsgMint is the sdk.Msg type for allowing an admin account to mint more of a token. For now, we only support minting to the sender account

func (*MsgMint) Descriptor

func (*MsgMint) Descriptor() ([]byte, []int)

func (*MsgMint) GetAmount

func (m *MsgMint) GetAmount() types.Coin

func (*MsgMint) GetMintToAddress

func (m *MsgMint) GetMintToAddress() string

func (*MsgMint) GetSender

func (m *MsgMint) GetSender() string

func (MsgMint) GetSigners

func (msg MsgMint) GetSigners() []sdk.AccAddress

func (*MsgMint) Marshal

func (m *MsgMint) Marshal() (dAtA []byte, err error)

func (*MsgMint) MarshalTo

func (m *MsgMint) MarshalTo(dAtA []byte) (int, error)

func (*MsgMint) MarshalToSizedBuffer

func (m *MsgMint) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgMint) ProtoMessage

func (*MsgMint) ProtoMessage()

func (*MsgMint) Reset

func (m *MsgMint) Reset()

func (*MsgMint) Size

func (m *MsgMint) Size() (n int)

func (*MsgMint) String

func (m *MsgMint) String() string

func (*MsgMint) Unmarshal

func (m *MsgMint) Unmarshal(dAtA []byte) error

func (MsgMint) ValidateBasic

func (msg MsgMint) ValidateBasic() error

func (*MsgMint) XXX_DiscardUnknown

func (m *MsgMint) XXX_DiscardUnknown()

func (*MsgMint) XXX_Marshal

func (m *MsgMint) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgMint) XXX_Merge

func (m *MsgMint) XXX_Merge(src proto.Message)

func (*MsgMint) XXX_Size

func (m *MsgMint) XXX_Size() int

func (*MsgMint) XXX_Unmarshal

func (m *MsgMint) XXX_Unmarshal(b []byte) error

type MsgSetDenomMetadata

type MsgSetDenomMetadata struct {
	Sender   string          `protobuf:"bytes,1,opt,name=sender,proto3" json:"sender,omitempty" yaml:"sender"`
	Metadata types1.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata" yaml:"metadata"`
}

MsgSetDenomMetadata is the sdk.Msg type for allowing an admin account to set the denom's bank metadata

func (*MsgSetDenomMetadata) Descriptor

func (*MsgSetDenomMetadata) Descriptor() ([]byte, []int)

func (*MsgSetDenomMetadata) GetMetadata

func (m *MsgSetDenomMetadata) GetMetadata() types1.Metadata

func (*MsgSetDenomMetadata) GetSender

func (m *MsgSetDenomMetadata) GetSender() string

func (MsgSetDenomMetadata) GetSigners

func (msg MsgSetDenomMetadata) GetSigners() []sdk.AccAddress

func (*MsgSetDenomMetadata) Marshal

func (m *MsgSetDenomMetadata) Marshal() (dAtA []byte, err error)

func (*MsgSetDenomMetadata) MarshalTo

func (m *MsgSetDenomMetadata) MarshalTo(dAtA []byte) (int, error)

func (*MsgSetDenomMetadata) MarshalToSizedBuffer

func (m *MsgSetDenomMetadata) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgSetDenomMetadata) ProtoMessage

func (*MsgSetDenomMetadata) ProtoMessage()

func (*MsgSetDenomMetadata) Reset

func (m *MsgSetDenomMetadata) Reset()

func (*MsgSetDenomMetadata) Size

func (m *MsgSetDenomMetadata) Size() (n int)

func (*MsgSetDenomMetadata) String

func (m *MsgSetDenomMetadata) String() string

func (*MsgSetDenomMetadata) Unmarshal

func (m *MsgSetDenomMetadata) Unmarshal(dAtA []byte) error

func (MsgSetDenomMetadata) ValidateBasic

func (msg MsgSetDenomMetadata) ValidateBasic() error

func (*MsgSetDenomMetadata) XXX_DiscardUnknown

func (m *MsgSetDenomMetadata) XXX_DiscardUnknown()

func (*MsgSetDenomMetadata) XXX_Marshal

func (m *MsgSetDenomMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgSetDenomMetadata) XXX_Merge

func (m *MsgSetDenomMetadata) XXX_Merge(src proto.Message)

func (*MsgSetDenomMetadata) XXX_Size

func (m *MsgSetDenomMetadata) XXX_Size() int

func (*MsgSetDenomMetadata) XXX_Unmarshal

func (m *MsgSetDenomMetadata) XXX_Unmarshal(b []byte) error

type MsgUpdateParams

type MsgUpdateParams struct {
	// authority is the address of the governance account.
	Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"`
	// params defines the x/mint parameters to update.
	//
	// NOTE: All parameters must be supplied.
	Params Params `protobuf:"bytes,2,opt,name=params,proto3" json:"params"`
}

MsgUpdateParams is the Msg/UpdateParams request type.

Since: cosmos-sdk 0.47

func (*MsgUpdateParams) Descriptor

func (*MsgUpdateParams) Descriptor() ([]byte, []int)

func (*MsgUpdateParams) GetAuthority

func (m *MsgUpdateParams) GetAuthority() string

func (*MsgUpdateParams) GetParams

func (m *MsgUpdateParams) GetParams() Params

func (MsgUpdateParams) GetSigners

func (msg MsgUpdateParams) GetSigners() []sdk.AccAddress

func (*MsgUpdateParams) Marshal

func (m *MsgUpdateParams) Marshal() (dAtA []byte, err error)

func (*MsgUpdateParams) MarshalTo

func (m *MsgUpdateParams) MarshalTo(dAtA []byte) (int, error)

func (*MsgUpdateParams) MarshalToSizedBuffer

func (m *MsgUpdateParams) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*MsgUpdateParams) ProtoMessage

func (*MsgUpdateParams) ProtoMessage()

func (*MsgUpdateParams) Reset

func (m *MsgUpdateParams) Reset()

func (*MsgUpdateParams) Size

func (m *MsgUpdateParams) Size() (n int)

func (*MsgUpdateParams) String

func (m *MsgUpdateParams) String() string

func (*MsgUpdateParams) Unmarshal

func (m *MsgUpdateParams) Unmarshal(dAtA []byte) error

func (MsgUpdateParams) ValidateBasic

func (msg MsgUpdateParams) ValidateBasic() error

func (*MsgUpdateParams) XXX_DiscardUnknown

func (m *MsgUpdateParams) XXX_DiscardUnknown()

func (*MsgUpdateParams) XXX_Marshal

func (m *MsgUpdateParams) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*MsgUpdateParams) XXX_Merge

func (m *MsgUpdateParams) XXX_Merge(src proto.Message)

func (*MsgUpdateParams) XXX_Size

func (m *MsgUpdateParams) XXX_Size() int

func (*MsgUpdateParams) XXX_Unmarshal

func (m *MsgUpdateParams) XXX_Unmarshal(b []byte) error

type Params

type Params struct {
	DenomCreationFee github_com_cosmos_cosmos_sdk_types.Coins `` /* 181-byte string literal not displayed */
	// if denom_creation_fee is an empty array, then this field is used to add more gas consumption
	// to the base cost.
	// https://github.com/CosmWasm/token-factory/issues/11
	DenomCreationGasConsume uint64 `` /* 169-byte string literal not displayed */
}

Params defines the parameters for the tokenfactory module.

func (*Params) Descriptor

func (*Params) Descriptor() ([]byte, []int)

func (*Params) GetDenomCreationFee

func (m *Params) GetDenomCreationFee() github_com_cosmos_cosmos_sdk_types.Coins

func (*Params) GetDenomCreationGasConsume

func (m *Params) GetDenomCreationGasConsume() uint64

func (*Params) Marshal

func (m *Params) Marshal() (dAtA []byte, err error)

func (*Params) MarshalTo

func (m *Params) MarshalTo(dAtA []byte) (int, error)

func (*Params) MarshalToSizedBuffer

func (m *Params) MarshalToSizedBuffer(dAtA []byte) (int, error)

func (*Params) ProtoMessage

func (*Params) ProtoMessage()

func (*Params) Reset

func (m *Params) Reset()

func (*Params) Size

func (m *Params) Size() (n int)

func (*Params) String

func (m *Params) String() string

func (*Params) Unmarshal

func (m *Params) Unmarshal(dAtA []byte) error

func (*Params) XXX_DiscardUnknown

func (m *Params) XXX_DiscardUnknown()

func (*Params) XXX_Marshal

func (m *Params) XXX_Marshal(b []byte, deterministic bool) ([]byte, error)

func (*Params) XXX_Merge

func (m *Params) XXX_Merge(src proto.Message)

func (*Params) XXX_Size

func (m *Params) XXX_Size() int

func (*Params) XXX_Unmarshal

func (m *Params) XXX_Unmarshal(b []byte) error

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL