slashingv1beta1

package
v0.0.0-...-a315113 Latest Latest
Warning

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

Go to latest
Published: Jun 20, 2022 License: Apache-2.0 Imports: 19 Imported by: 0

Documentation

Overview

Code generated by protoc-gen-go-pulsar. DO NOT EDIT.

Code generated by protoc-gen-go-pulsar. DO NOT EDIT.

Code generated by protoc-gen-go-pulsar. DO NOT EDIT.

Code generated by protoc-gen-go-pulsar. DO NOT EDIT.

Index

Constants

This section is empty.

Variables

View Source
var File_cosmos_slashing_v1beta1_genesis_proto protoreflect.FileDescriptor
View Source
var File_cosmos_slashing_v1beta1_query_proto protoreflect.FileDescriptor
View Source
var File_cosmos_slashing_v1beta1_slashing_proto protoreflect.FileDescriptor
View Source
var File_cosmos_slashing_v1beta1_tx_proto protoreflect.FileDescriptor
View Source
var Msg_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "cosmos.slashing.v1beta1.Msg",
	HandlerType: (*MsgServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Unjail",
			Handler:    _Msg_Unjail_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "cosmos/slashing/v1beta1/tx.proto",
}

Msg_ServiceDesc is the grpc.ServiceDesc for Msg service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)

View Source
var Query_ServiceDesc = grpc.ServiceDesc{
	ServiceName: "cosmos.slashing.v1beta1.Query",
	HandlerType: (*QueryServer)(nil),
	Methods: []grpc.MethodDesc{
		{
			MethodName: "Params",
			Handler:    _Query_Params_Handler,
		},
		{
			MethodName: "SigningInfo",
			Handler:    _Query_SigningInfo_Handler,
		},
		{
			MethodName: "SigningInfos",
			Handler:    _Query_SigningInfos_Handler,
		},
	},
	Streams:  []grpc.StreamDesc{},
	Metadata: "cosmos/slashing/v1beta1/query.proto",
}

Query_ServiceDesc is the grpc.ServiceDesc for Query service. It's only intended for direct use with grpc.RegisterService, and not to be introspected or modified (even as a copy)

Functions

func RegisterMsgServer

func RegisterMsgServer(s grpc.ServiceRegistrar, srv MsgServer)

func RegisterQueryServer

func RegisterQueryServer(s grpc.ServiceRegistrar, srv QueryServer)

Types

type GenesisState

type GenesisState struct {

	// params defines all the paramaters of related to deposit.
	Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
	// signing_infos represents a map between validator addresses and their
	// signing infos.
	SigningInfos []*SigningInfo `protobuf:"bytes,2,rep,name=signing_infos,json=signingInfos,proto3" json:"signing_infos,omitempty"`
	// missed_blocks represents a map between validator addresses and their
	// missed blocks.
	MissedBlocks []*ValidatorMissedBlocks `protobuf:"bytes,3,rep,name=missed_blocks,json=missedBlocks,proto3" json:"missed_blocks,omitempty"`
	// contains filtered or unexported fields
}

GenesisState defines the slashing module's genesis state.

func (*GenesisState) Descriptor deprecated

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

Deprecated: Use GenesisState.ProtoReflect.Descriptor instead.

func (*GenesisState) GetMissedBlocks

func (x *GenesisState) GetMissedBlocks() []*ValidatorMissedBlocks

func (*GenesisState) GetParams

func (x *GenesisState) GetParams() *Params

func (*GenesisState) GetSigningInfos

func (x *GenesisState) GetSigningInfos() []*SigningInfo

func (*GenesisState) ProtoMessage

func (*GenesisState) ProtoMessage()

func (*GenesisState) ProtoReflect

func (x *GenesisState) ProtoReflect() protoreflect.Message

func (*GenesisState) Reset

func (x *GenesisState) Reset()

func (*GenesisState) String

func (x *GenesisState) String() string

type MissedBlock

type MissedBlock struct {

	// index is the height at which the block was missed.
	Index int64 `protobuf:"varint,1,opt,name=index,proto3" json:"index,omitempty"`
	// missed is the missed status.
	Missed bool `protobuf:"varint,2,opt,name=missed,proto3" json:"missed,omitempty"`
	// contains filtered or unexported fields
}

MissedBlock contains height and missed status as boolean.

func (*MissedBlock) Descriptor deprecated

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

Deprecated: Use MissedBlock.ProtoReflect.Descriptor instead.

func (*MissedBlock) GetIndex

func (x *MissedBlock) GetIndex() int64

func (*MissedBlock) GetMissed

func (x *MissedBlock) GetMissed() bool

func (*MissedBlock) ProtoMessage

func (*MissedBlock) ProtoMessage()

func (*MissedBlock) ProtoReflect

func (x *MissedBlock) ProtoReflect() protoreflect.Message

func (*MissedBlock) Reset

func (x *MissedBlock) Reset()

func (*MissedBlock) String

func (x *MissedBlock) String() string

type MsgClient

type MsgClient interface {
	// Unjail defines a method for unjailing a jailed validator, thus returning
	// them into the bonded validator set, so they can begin receiving provisions
	// and rewards again.
	Unjail(ctx context.Context, in *MsgUnjail, opts ...grpc.CallOption) (*MsgUnjailResponse, error)
}

MsgClient is the client API for Msg service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.

func NewMsgClient

func NewMsgClient(cc grpc.ClientConnInterface) MsgClient

type MsgServer

type MsgServer interface {
	// Unjail defines a method for unjailing a jailed validator, thus returning
	// them into the bonded validator set, so they can begin receiving provisions
	// and rewards again.
	Unjail(context.Context, *MsgUnjail) (*MsgUnjailResponse, error)
	// contains filtered or unexported methods
}

MsgServer is the server API for Msg service. All implementations must embed UnimplementedMsgServer for forward compatibility

type MsgUnjail

type MsgUnjail struct {
	ValidatorAddr string `protobuf:"bytes,1,opt,name=validator_addr,json=validatorAddr,proto3" json:"validator_addr,omitempty"`
	// contains filtered or unexported fields
}

MsgUnjail defines the Msg/Unjail request type

func (*MsgUnjail) Descriptor deprecated

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

Deprecated: Use MsgUnjail.ProtoReflect.Descriptor instead.

func (*MsgUnjail) GetValidatorAddr

func (x *MsgUnjail) GetValidatorAddr() string

func (*MsgUnjail) ProtoMessage

func (*MsgUnjail) ProtoMessage()

func (*MsgUnjail) ProtoReflect

func (x *MsgUnjail) ProtoReflect() protoreflect.Message

func (*MsgUnjail) Reset

func (x *MsgUnjail) Reset()

func (*MsgUnjail) String

func (x *MsgUnjail) String() string

type MsgUnjailResponse

type MsgUnjailResponse struct {
	// contains filtered or unexported fields
}

MsgUnjailResponse defines the Msg/Unjail response type

func (*MsgUnjailResponse) Descriptor deprecated

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

Deprecated: Use MsgUnjailResponse.ProtoReflect.Descriptor instead.

func (*MsgUnjailResponse) ProtoMessage

func (*MsgUnjailResponse) ProtoMessage()

func (*MsgUnjailResponse) ProtoReflect

func (x *MsgUnjailResponse) ProtoReflect() protoreflect.Message

func (*MsgUnjailResponse) Reset

func (x *MsgUnjailResponse) Reset()

func (*MsgUnjailResponse) String

func (x *MsgUnjailResponse) String() string

type Params

type Params struct {
	SignedBlocksWindow      int64                `protobuf:"varint,1,opt,name=signed_blocks_window,json=signedBlocksWindow,proto3" json:"signed_blocks_window,omitempty"`
	MinSignedPerWindow      []byte               `protobuf:"bytes,2,opt,name=min_signed_per_window,json=minSignedPerWindow,proto3" json:"min_signed_per_window,omitempty"`
	DowntimeJailDuration    *durationpb.Duration `protobuf:"bytes,3,opt,name=downtime_jail_duration,json=downtimeJailDuration,proto3" json:"downtime_jail_duration,omitempty"`
	SlashFractionDoubleSign []byte               `` /* 134-byte string literal not displayed */
	SlashFractionDowntime   []byte               `` /* 126-byte string literal not displayed */
	// contains filtered or unexported fields
}

Params represents the parameters used for by the slashing module.

func (*Params) Descriptor deprecated

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

Deprecated: Use Params.ProtoReflect.Descriptor instead.

func (*Params) GetDowntimeJailDuration

func (x *Params) GetDowntimeJailDuration() *durationpb.Duration

func (*Params) GetMinSignedPerWindow

func (x *Params) GetMinSignedPerWindow() []byte

func (*Params) GetSignedBlocksWindow

func (x *Params) GetSignedBlocksWindow() int64

func (*Params) GetSlashFractionDoubleSign

func (x *Params) GetSlashFractionDoubleSign() []byte

func (*Params) GetSlashFractionDowntime

func (x *Params) GetSlashFractionDowntime() []byte

func (*Params) ProtoMessage

func (*Params) ProtoMessage()

func (*Params) ProtoReflect

func (x *Params) ProtoReflect() protoreflect.Message

func (*Params) Reset

func (x *Params) Reset()

func (*Params) String

func (x *Params) String() string

type QueryClient

type QueryClient interface {
	// Params queries the parameters of slashing module
	Params(ctx context.Context, in *QueryParamsRequest, opts ...grpc.CallOption) (*QueryParamsResponse, error)
	// SigningInfo queries the signing info of given cons address
	SigningInfo(ctx context.Context, in *QuerySigningInfoRequest, opts ...grpc.CallOption) (*QuerySigningInfoResponse, error)
	// SigningInfos queries signing info of all validators
	SigningInfos(ctx context.Context, in *QuerySigningInfosRequest, opts ...grpc.CallOption) (*QuerySigningInfosResponse, error)
}

QueryClient is the client API for Query service.

For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream.

func NewQueryClient

func NewQueryClient(cc grpc.ClientConnInterface) QueryClient

type QueryParamsRequest

type QueryParamsRequest struct {
	// contains filtered or unexported fields
}

QueryParamsRequest is the request type for the Query/Params RPC method

func (*QueryParamsRequest) Descriptor deprecated

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

Deprecated: Use QueryParamsRequest.ProtoReflect.Descriptor instead.

func (*QueryParamsRequest) ProtoMessage

func (*QueryParamsRequest) ProtoMessage()

func (*QueryParamsRequest) ProtoReflect

func (x *QueryParamsRequest) ProtoReflect() protoreflect.Message

func (*QueryParamsRequest) Reset

func (x *QueryParamsRequest) Reset()

func (*QueryParamsRequest) String

func (x *QueryParamsRequest) String() string

type QueryParamsResponse

type QueryParamsResponse struct {
	Params *Params `protobuf:"bytes,1,opt,name=params,proto3" json:"params,omitempty"`
	// contains filtered or unexported fields
}

QueryParamsResponse is the response type for the Query/Params RPC method

func (*QueryParamsResponse) Descriptor deprecated

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

Deprecated: Use QueryParamsResponse.ProtoReflect.Descriptor instead.

func (*QueryParamsResponse) GetParams

func (x *QueryParamsResponse) GetParams() *Params

func (*QueryParamsResponse) ProtoMessage

func (*QueryParamsResponse) ProtoMessage()

func (*QueryParamsResponse) ProtoReflect

func (x *QueryParamsResponse) ProtoReflect() protoreflect.Message

func (*QueryParamsResponse) Reset

func (x *QueryParamsResponse) Reset()

func (*QueryParamsResponse) String

func (x *QueryParamsResponse) String() string

type QueryServer

type QueryServer interface {
	// Params queries the parameters of slashing module
	Params(context.Context, *QueryParamsRequest) (*QueryParamsResponse, error)
	// SigningInfo queries the signing info of given cons address
	SigningInfo(context.Context, *QuerySigningInfoRequest) (*QuerySigningInfoResponse, error)
	// SigningInfos queries signing info of all validators
	SigningInfos(context.Context, *QuerySigningInfosRequest) (*QuerySigningInfosResponse, error)
	// contains filtered or unexported methods
}

QueryServer is the server API for Query service. All implementations must embed UnimplementedQueryServer for forward compatibility

type QuerySigningInfoRequest

type QuerySigningInfoRequest struct {

	// cons_address is the address to query signing info of
	ConsAddress string `protobuf:"bytes,1,opt,name=cons_address,json=consAddress,proto3" json:"cons_address,omitempty"`
	// contains filtered or unexported fields
}

QuerySigningInfoRequest is the request type for the Query/SigningInfo RPC method

func (*QuerySigningInfoRequest) Descriptor deprecated

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

Deprecated: Use QuerySigningInfoRequest.ProtoReflect.Descriptor instead.

func (*QuerySigningInfoRequest) GetConsAddress

func (x *QuerySigningInfoRequest) GetConsAddress() string

func (*QuerySigningInfoRequest) ProtoMessage

func (*QuerySigningInfoRequest) ProtoMessage()

func (*QuerySigningInfoRequest) ProtoReflect

func (x *QuerySigningInfoRequest) ProtoReflect() protoreflect.Message

func (*QuerySigningInfoRequest) Reset

func (x *QuerySigningInfoRequest) Reset()

func (*QuerySigningInfoRequest) String

func (x *QuerySigningInfoRequest) String() string

type QuerySigningInfoResponse

type QuerySigningInfoResponse struct {

	// val_signing_info is the signing info of requested val cons address
	ValSigningInfo *ValidatorSigningInfo `protobuf:"bytes,1,opt,name=val_signing_info,json=valSigningInfo,proto3" json:"val_signing_info,omitempty"`
	// contains filtered or unexported fields
}

QuerySigningInfoResponse is the response type for the Query/SigningInfo RPC method

func (*QuerySigningInfoResponse) Descriptor deprecated

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

Deprecated: Use QuerySigningInfoResponse.ProtoReflect.Descriptor instead.

func (*QuerySigningInfoResponse) GetValSigningInfo

func (x *QuerySigningInfoResponse) GetValSigningInfo() *ValidatorSigningInfo

func (*QuerySigningInfoResponse) ProtoMessage

func (*QuerySigningInfoResponse) ProtoMessage()

func (*QuerySigningInfoResponse) ProtoReflect

func (x *QuerySigningInfoResponse) ProtoReflect() protoreflect.Message

func (*QuerySigningInfoResponse) Reset

func (x *QuerySigningInfoResponse) Reset()

func (*QuerySigningInfoResponse) String

func (x *QuerySigningInfoResponse) String() string

type QuerySigningInfosRequest

type QuerySigningInfosRequest struct {
	Pagination *v1beta1.PageRequest `protobuf:"bytes,1,opt,name=pagination,proto3" json:"pagination,omitempty"`
	// contains filtered or unexported fields
}

QuerySigningInfosRequest is the request type for the Query/SigningInfos RPC method

func (*QuerySigningInfosRequest) Descriptor deprecated

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

Deprecated: Use QuerySigningInfosRequest.ProtoReflect.Descriptor instead.

func (*QuerySigningInfosRequest) GetPagination

func (x *QuerySigningInfosRequest) GetPagination() *v1beta1.PageRequest

func (*QuerySigningInfosRequest) ProtoMessage

func (*QuerySigningInfosRequest) ProtoMessage()

func (*QuerySigningInfosRequest) ProtoReflect

func (x *QuerySigningInfosRequest) ProtoReflect() protoreflect.Message

func (*QuerySigningInfosRequest) Reset

func (x *QuerySigningInfosRequest) Reset()

func (*QuerySigningInfosRequest) String

func (x *QuerySigningInfosRequest) String() string

type QuerySigningInfosResponse

type QuerySigningInfosResponse struct {

	// info is the signing info of all validators
	Info       []*ValidatorSigningInfo `protobuf:"bytes,1,rep,name=info,proto3" json:"info,omitempty"`
	Pagination *v1beta1.PageResponse   `protobuf:"bytes,2,opt,name=pagination,proto3" json:"pagination,omitempty"`
	// contains filtered or unexported fields
}

QuerySigningInfosResponse is the response type for the Query/SigningInfos RPC method

func (*QuerySigningInfosResponse) Descriptor deprecated

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

Deprecated: Use QuerySigningInfosResponse.ProtoReflect.Descriptor instead.

func (*QuerySigningInfosResponse) GetInfo

func (*QuerySigningInfosResponse) GetPagination

func (x *QuerySigningInfosResponse) GetPagination() *v1beta1.PageResponse

func (*QuerySigningInfosResponse) ProtoMessage

func (*QuerySigningInfosResponse) ProtoMessage()

func (*QuerySigningInfosResponse) ProtoReflect

func (*QuerySigningInfosResponse) Reset

func (x *QuerySigningInfosResponse) Reset()

func (*QuerySigningInfosResponse) String

func (x *QuerySigningInfosResponse) String() string

type SigningInfo

type SigningInfo struct {

	// address is the validator address.
	Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	// validator_signing_info represents the signing info of this validator.
	ValidatorSigningInfo *ValidatorSigningInfo `protobuf:"bytes,2,opt,name=validator_signing_info,json=validatorSigningInfo,proto3" json:"validator_signing_info,omitempty"`
	// contains filtered or unexported fields
}

SigningInfo stores validator signing info of corresponding address.

func (*SigningInfo) Descriptor deprecated

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

Deprecated: Use SigningInfo.ProtoReflect.Descriptor instead.

func (*SigningInfo) GetAddress

func (x *SigningInfo) GetAddress() string

func (*SigningInfo) GetValidatorSigningInfo

func (x *SigningInfo) GetValidatorSigningInfo() *ValidatorSigningInfo

func (*SigningInfo) ProtoMessage

func (*SigningInfo) ProtoMessage()

func (*SigningInfo) ProtoReflect

func (x *SigningInfo) ProtoReflect() protoreflect.Message

func (*SigningInfo) Reset

func (x *SigningInfo) Reset()

func (*SigningInfo) String

func (x *SigningInfo) String() string

type UnimplementedMsgServer

type UnimplementedMsgServer struct {
}

UnimplementedMsgServer must be embedded to have forward compatible implementations.

func (UnimplementedMsgServer) Unjail

type UnimplementedQueryServer

type UnimplementedQueryServer struct {
}

UnimplementedQueryServer must be embedded to have forward compatible implementations.

func (UnimplementedQueryServer) Params

type UnsafeMsgServer

type UnsafeMsgServer interface {
	// contains filtered or unexported methods
}

UnsafeMsgServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to MsgServer will result in compilation errors.

type UnsafeQueryServer

type UnsafeQueryServer interface {
	// contains filtered or unexported methods
}

UnsafeQueryServer may be embedded to opt out of forward compatibility for this service. Use of this interface is not recommended, as added methods to QueryServer will result in compilation errors.

type ValidatorMissedBlocks

type ValidatorMissedBlocks struct {

	// address is the validator address.
	Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	// missed_blocks is an array of missed blocks by the validator.
	MissedBlocks []*MissedBlock `protobuf:"bytes,2,rep,name=missed_blocks,json=missedBlocks,proto3" json:"missed_blocks,omitempty"`
	// contains filtered or unexported fields
}

ValidatorMissedBlocks contains array of missed blocks of corresponding address.

func (*ValidatorMissedBlocks) Descriptor deprecated

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

Deprecated: Use ValidatorMissedBlocks.ProtoReflect.Descriptor instead.

func (*ValidatorMissedBlocks) GetAddress

func (x *ValidatorMissedBlocks) GetAddress() string

func (*ValidatorMissedBlocks) GetMissedBlocks

func (x *ValidatorMissedBlocks) GetMissedBlocks() []*MissedBlock

func (*ValidatorMissedBlocks) ProtoMessage

func (*ValidatorMissedBlocks) ProtoMessage()

func (*ValidatorMissedBlocks) ProtoReflect

func (x *ValidatorMissedBlocks) ProtoReflect() protoreflect.Message

func (*ValidatorMissedBlocks) Reset

func (x *ValidatorMissedBlocks) Reset()

func (*ValidatorMissedBlocks) String

func (x *ValidatorMissedBlocks) String() string

type ValidatorSigningInfo

type ValidatorSigningInfo struct {
	Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	// Height at which validator was first a candidate OR was unjailed
	StartHeight int64 `protobuf:"varint,2,opt,name=start_height,json=startHeight,proto3" json:"start_height,omitempty"`
	// Index which is incremented each time the validator was a bonded
	// in a block and may have signed a precommit or not. This in conjunction with the
	// `SignedBlocksWindow` param determines the index in the `MissedBlocksBitArray`.
	IndexOffset int64 `protobuf:"varint,3,opt,name=index_offset,json=indexOffset,proto3" json:"index_offset,omitempty"`
	// Timestamp until which the validator is jailed due to liveness downtime.
	JailedUntil *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=jailed_until,json=jailedUntil,proto3" json:"jailed_until,omitempty"`
	// Whether or not a validator has been tombstoned (killed out of validator set). It is set
	// once the validator commits an equivocation or for any other configured misbehiavor.
	Tombstoned bool `protobuf:"varint,5,opt,name=tombstoned,proto3" json:"tombstoned,omitempty"`
	// A counter kept to avoid unnecessary array reads.
	// Note that `Sum(MissedBlocksBitArray)` always equals `MissedBlocksCounter`.
	MissedBlocksCounter int64 `protobuf:"varint,6,opt,name=missed_blocks_counter,json=missedBlocksCounter,proto3" json:"missed_blocks_counter,omitempty"`
	// contains filtered or unexported fields
}

ValidatorSigningInfo defines a validator's signing info for monitoring their liveness activity.

func (*ValidatorSigningInfo) Descriptor deprecated

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

Deprecated: Use ValidatorSigningInfo.ProtoReflect.Descriptor instead.

func (*ValidatorSigningInfo) GetAddress

func (x *ValidatorSigningInfo) GetAddress() string

func (*ValidatorSigningInfo) GetIndexOffset

func (x *ValidatorSigningInfo) GetIndexOffset() int64

func (*ValidatorSigningInfo) GetJailedUntil

func (x *ValidatorSigningInfo) GetJailedUntil() *timestamppb.Timestamp

func (*ValidatorSigningInfo) GetMissedBlocksCounter

func (x *ValidatorSigningInfo) GetMissedBlocksCounter() int64

func (*ValidatorSigningInfo) GetStartHeight

func (x *ValidatorSigningInfo) GetStartHeight() int64

func (*ValidatorSigningInfo) GetTombstoned

func (x *ValidatorSigningInfo) GetTombstoned() bool

func (*ValidatorSigningInfo) ProtoMessage

func (*ValidatorSigningInfo) ProtoMessage()

func (*ValidatorSigningInfo) ProtoReflect

func (x *ValidatorSigningInfo) ProtoReflect() protoreflect.Message

func (*ValidatorSigningInfo) Reset

func (x *ValidatorSigningInfo) Reset()

func (*ValidatorSigningInfo) String

func (x *ValidatorSigningInfo) String() string

Jump to

Keyboard shortcuts

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