// Code generated by protoc-gen-go. DO NOT EDIT.
// source: model.proto

package pb

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	_struct "github.com/golang/protobuf/ptypes/struct"
	timestamp "github.com/golang/protobuf/ptypes/timestamp"
	math "math"
)

// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf

// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package

// Type controls read (R), annotate (A), and write (W) access
type Thread_Type int32

const (
	Thread_PRIVATE   Thread_Type = 0
	Thread_READ_ONLY Thread_Type = 1
	Thread_PUBLIC    Thread_Type = 2
	Thread_OPEN      Thread_Type = 3
)

var Thread_Type_name = map[int32]string{
	0: "PRIVATE",
	1: "READ_ONLY",
	2: "PUBLIC",
	3: "OPEN",
}

var Thread_Type_value = map[string]int32{
	"PRIVATE":   0,
	"READ_ONLY": 1,
	"PUBLIC":    2,
	"OPEN":      3,
}

func (x Thread_Type) String() string {
	return proto.EnumName(Thread_Type_name, int32(x))
}

func (Thread_Type) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{8, 0}
}

// Sharing controls if (Y/N) a thread can be shared
type Thread_Sharing int32

const (
	Thread_NOT_SHARED  Thread_Sharing = 0
	Thread_INVITE_ONLY Thread_Sharing = 1
	Thread_SHARED      Thread_Sharing = 2
)

var Thread_Sharing_name = map[int32]string{
	0: "NOT_SHARED",
	1: "INVITE_ONLY",
	2: "SHARED",
}

var Thread_Sharing_value = map[string]int32{
	"NOT_SHARED":  0,
	"INVITE_ONLY": 1,
	"SHARED":      2,
}

func (x Thread_Sharing) String() string {
	return proto.EnumName(Thread_Sharing_name, int32(x))
}

func (Thread_Sharing) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{8, 1}
}

// State indicates the loading state
type Thread_State int32

const (
	Thread_LOADING_TAIL Thread_State = 0
	Thread_LOADED       Thread_State = 1
	Thread_LOADING_HEAD Thread_State = 2
)

var Thread_State_name = map[int32]string{
	0: "LOADING_TAIL",
	1: "LOADED",
	2: "LOADING_HEAD",
}

var Thread_State_value = map[string]int32{
	"LOADING_TAIL": 0,
	"LOADED":       1,
	"LOADING_HEAD": 2,
}

func (x Thread_State) String() string {
	return proto.EnumName(Thread_State_name, int32(x))
}

func (Thread_State) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{8, 2}
}

type Block_BlockType int32

const (
	Block_MERGE    Block_BlockType = 0 // Deprecated: Do not use.
	Block_IGNORE   Block_BlockType = 1
	Block_FLAG     Block_BlockType = 2
	Block_JOIN     Block_BlockType = 3
	Block_ANNOUNCE Block_BlockType = 4
	Block_LEAVE    Block_BlockType = 5
	Block_TEXT     Block_BlockType = 6
	Block_FILES    Block_BlockType = 7
	Block_COMMENT  Block_BlockType = 8 // Deprecated: Do not use.
	Block_LIKE     Block_BlockType = 9
	Block_ADD      Block_BlockType = 50
)

var Block_BlockType_name = map[int32]string{
	0:  "MERGE",
	1:  "IGNORE",
	2:  "FLAG",
	3:  "JOIN",
	4:  "ANNOUNCE",
	5:  "LEAVE",
	6:  "TEXT",
	7:  "FILES",
	8:  "COMMENT",
	9:  "LIKE",
	50: "ADD",
}

var Block_BlockType_value = map[string]int32{
	"MERGE":    0,
	"IGNORE":   1,
	"FLAG":     2,
	"JOIN":     3,
	"ANNOUNCE": 4,
	"LEAVE":    5,
	"TEXT":     6,
	"FILES":    7,
	"COMMENT":  8,
	"LIKE":     9,
	"ADD":      50,
}

func (x Block_BlockType) String() string {
	return proto.EnumName(Block_BlockType_name, int32(x))
}

func (Block_BlockType) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{11, 0}
}

type Block_BlockStatus int32

const (
	Block_READY   Block_BlockStatus = 0
	Block_QUEUED  Block_BlockStatus = 1
	Block_PENDING Block_BlockStatus = 2
)

var Block_BlockStatus_name = map[int32]string{
	0: "READY",
	1: "QUEUED",
	2: "PENDING",
}

var Block_BlockStatus_value = map[string]int32{
	"READY":   0,
	"QUEUED":  1,
	"PENDING": 2,
}

func (x Block_BlockStatus) String() string {
	return proto.EnumName(Block_BlockStatus_name, int32(x))
}

func (Block_BlockStatus) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{11, 1}
}

type Notification_Type int32

const (
	Notification_INVITE_RECEIVED     Notification_Type = 0
	Notification_ACCOUNT_PEER_JOINED Notification_Type = 1
	Notification_ACCOUNT_PEER_LEFT   Notification_Type = 8
	Notification_PEER_JOINED         Notification_Type = 2
	Notification_PEER_LEFT           Notification_Type = 3
	Notification_MESSAGE_ADDED       Notification_Type = 4
	Notification_FILES_ADDED         Notification_Type = 5
	Notification_COMMENT_ADDED       Notification_Type = 6
	Notification_LIKE_ADDED          Notification_Type = 7
)

var Notification_Type_name = map[int32]string{
	0: "INVITE_RECEIVED",
	1: "ACCOUNT_PEER_JOINED",
	8: "ACCOUNT_PEER_LEFT",
	2: "PEER_JOINED",
	3: "PEER_LEFT",
	4: "MESSAGE_ADDED",
	5: "FILES_ADDED",
	6: "COMMENT_ADDED",
	7: "LIKE_ADDED",
}

var Notification_Type_value = map[string]int32{
	"INVITE_RECEIVED":     0,
	"ACCOUNT_PEER_JOINED": 1,
	"ACCOUNT_PEER_LEFT":   8,
	"PEER_JOINED":         2,
	"PEER_LEFT":           3,
	"MESSAGE_ADDED":       4,
	"FILES_ADDED":         5,
	"COMMENT_ADDED":       6,
	"LIKE_ADDED":          7,
}

func (x Notification_Type) String() string {
	return proto.EnumName(Notification_Type_name, int32(x))
}

func (Notification_Type) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{19, 0}
}

type CafeRequest_Type int32

const (
	CafeRequest_STORE          CafeRequest_Type = 0
	CafeRequest_UNSTORE        CafeRequest_Type = 3
	CafeRequest_STORE_THREAD   CafeRequest_Type = 1
	CafeRequest_UNSTORE_THREAD CafeRequest_Type = 4
	CafeRequest_INBOX          CafeRequest_Type = 2
)

var CafeRequest_Type_name = map[int32]string{
	0: "STORE",
	3: "UNSTORE",
	1: "STORE_THREAD",
	4: "UNSTORE_THREAD",
	2: "INBOX",
}

var CafeRequest_Type_value = map[string]int32{
	"STORE":          0,
	"UNSTORE":        3,
	"STORE_THREAD":   1,
	"UNSTORE_THREAD": 4,
	"INBOX":          2,
}

func (x CafeRequest_Type) String() string {
	return proto.EnumName(CafeRequest_Type_name, int32(x))
}

func (CafeRequest_Type) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{24, 0}
}

type CafeRequest_Status int32

const (
	CafeRequest_NEW      CafeRequest_Status = 0
	CafeRequest_PENDING  CafeRequest_Status = 1
	CafeRequest_COMPLETE CafeRequest_Status = 2
)

var CafeRequest_Status_name = map[int32]string{
	0: "NEW",
	1: "PENDING",
	2: "COMPLETE",
}

var CafeRequest_Status_value = map[string]int32{
	"NEW":      0,
	"PENDING":  1,
	"COMPLETE": 2,
}

func (x CafeRequest_Status) String() string {
	return proto.EnumName(CafeRequest_Status_name, int32(x))
}

func (CafeRequest_Status) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{24, 1}
}

type CafeHTTPRequest_Type int32

const (
	CafeHTTPRequest_PUT    CafeHTTPRequest_Type = 0
	CafeHTTPRequest_POST   CafeHTTPRequest_Type = 1
	CafeHTTPRequest_DELETE CafeHTTPRequest_Type = 2
)

var CafeHTTPRequest_Type_name = map[int32]string{
	0: "PUT",
	1: "POST",
	2: "DELETE",
}

var CafeHTTPRequest_Type_value = map[string]int32{
	"PUT":    0,
	"POST":   1,
	"DELETE": 2,
}

func (x CafeHTTPRequest_Type) String() string {
	return proto.EnumName(CafeHTTPRequest_Type_name, int32(x))
}

func (CafeHTTPRequest_Type) EnumDescriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{27, 0}
}

type SwarmPeerStream struct {
	Protocol             string   `protobuf:"bytes,1,opt,name=protocol,proto3" json:"protocol,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *SwarmPeerStream) Reset()         { *m = SwarmPeerStream{} }
func (m *SwarmPeerStream) String() string { return proto.CompactTextString(m) }
func (*SwarmPeerStream) ProtoMessage()    {}
func (*SwarmPeerStream) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{0}
}

func (m *SwarmPeerStream) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SwarmPeerStream.Unmarshal(m, b)
}
func (m *SwarmPeerStream) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SwarmPeerStream.Marshal(b, m, deterministic)
}
func (m *SwarmPeerStream) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SwarmPeerStream.Merge(m, src)
}
func (m *SwarmPeerStream) XXX_Size() int {
	return xxx_messageInfo_SwarmPeerStream.Size(m)
}
func (m *SwarmPeerStream) XXX_DiscardUnknown() {
	xxx_messageInfo_SwarmPeerStream.DiscardUnknown(m)
}

var xxx_messageInfo_SwarmPeerStream proto.InternalMessageInfo

func (m *SwarmPeerStream) GetProtocol() string {
	if m != nil {
		return m.Protocol
	}
	return ""
}

type SwarmPeer struct {
	Addr                 string             `protobuf:"bytes,1,opt,name=addr,proto3" json:"addr,omitempty"`
	Peer                 string             `protobuf:"bytes,2,opt,name=peer,proto3" json:"peer,omitempty"`
	Latency              string             `protobuf:"bytes,3,opt,name=latency,proto3" json:"latency,omitempty"`
	Muxer                string             `protobuf:"bytes,4,opt,name=muxer,proto3" json:"muxer,omitempty"`
	Direction            int32              `protobuf:"varint,5,opt,name=direction,proto3" json:"direction,omitempty"`
	Streams              []*SwarmPeerStream `protobuf:"bytes,6,rep,name=streams,proto3" json:"streams,omitempty"`
	XXX_NoUnkeyedLiteral struct{}           `json:"-"`
	XXX_unrecognized     []byte             `json:"-"`
	XXX_sizecache        int32              `json:"-"`
}

func (m *SwarmPeer) Reset()         { *m = SwarmPeer{} }
func (m *SwarmPeer) String() string { return proto.CompactTextString(m) }
func (*SwarmPeer) ProtoMessage()    {}
func (*SwarmPeer) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{1}
}

func (m *SwarmPeer) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SwarmPeer.Unmarshal(m, b)
}
func (m *SwarmPeer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SwarmPeer.Marshal(b, m, deterministic)
}
func (m *SwarmPeer) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SwarmPeer.Merge(m, src)
}
func (m *SwarmPeer) XXX_Size() int {
	return xxx_messageInfo_SwarmPeer.Size(m)
}
func (m *SwarmPeer) XXX_DiscardUnknown() {
	xxx_messageInfo_SwarmPeer.DiscardUnknown(m)
}

var xxx_messageInfo_SwarmPeer proto.InternalMessageInfo

func (m *SwarmPeer) GetAddr() string {
	if m != nil {
		return m.Addr
	}
	return ""
}

func (m *SwarmPeer) GetPeer() string {
	if m != nil {
		return m.Peer
	}
	return ""
}

func (m *SwarmPeer) GetLatency() string {
	if m != nil {
		return m.Latency
	}
	return ""
}

func (m *SwarmPeer) GetMuxer() string {
	if m != nil {
		return m.Muxer
	}
	return ""
}

func (m *SwarmPeer) GetDirection() int32 {
	if m != nil {
		return m.Direction
	}
	return 0
}

func (m *SwarmPeer) GetStreams() []*SwarmPeerStream {
	if m != nil {
		return m.Streams
	}
	return nil
}

type SwarmPeerList struct {
	Peers                []*SwarmPeer `protobuf:"bytes,1,rep,name=peers,proto3" json:"peers,omitempty"`
	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
	XXX_unrecognized     []byte       `json:"-"`
	XXX_sizecache        int32        `json:"-"`
}

func (m *SwarmPeerList) Reset()         { *m = SwarmPeerList{} }
func (m *SwarmPeerList) String() string { return proto.CompactTextString(m) }
func (*SwarmPeerList) ProtoMessage()    {}
func (*SwarmPeerList) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{2}
}

func (m *SwarmPeerList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_SwarmPeerList.Unmarshal(m, b)
}
func (m *SwarmPeerList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_SwarmPeerList.Marshal(b, m, deterministic)
}
func (m *SwarmPeerList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_SwarmPeerList.Merge(m, src)
}
func (m *SwarmPeerList) XXX_Size() int {
	return xxx_messageInfo_SwarmPeerList.Size(m)
}
func (m *SwarmPeerList) XXX_DiscardUnknown() {
	xxx_messageInfo_SwarmPeerList.DiscardUnknown(m)
}

var xxx_messageInfo_SwarmPeerList proto.InternalMessageInfo

func (m *SwarmPeerList) GetPeers() []*SwarmPeer {
	if m != nil {
		return m.Peers
	}
	return nil
}

type Peer struct {
	Id                   string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Address              string               `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
	Name                 string               `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	Avatar               string               `protobuf:"bytes,4,opt,name=avatar,proto3" json:"avatar,omitempty"`
	Inboxes              []*Cafe              `protobuf:"bytes,5,rep,name=inboxes,proto3" json:"inboxes,omitempty"`
	Created              *timestamp.Timestamp `protobuf:"bytes,6,opt,name=created,proto3" json:"created,omitempty"`
	Updated              *timestamp.Timestamp `protobuf:"bytes,7,opt,name=updated,proto3" json:"updated,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *Peer) Reset()         { *m = Peer{} }
func (m *Peer) String() string { return proto.CompactTextString(m) }
func (*Peer) ProtoMessage()    {}
func (*Peer) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{3}
}

func (m *Peer) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Peer.Unmarshal(m, b)
}
func (m *Peer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Peer.Marshal(b, m, deterministic)
}
func (m *Peer) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Peer.Merge(m, src)
}
func (m *Peer) XXX_Size() int {
	return xxx_messageInfo_Peer.Size(m)
}
func (m *Peer) XXX_DiscardUnknown() {
	xxx_messageInfo_Peer.DiscardUnknown(m)
}

var xxx_messageInfo_Peer proto.InternalMessageInfo

func (m *Peer) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *Peer) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *Peer) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *Peer) GetAvatar() string {
	if m != nil {
		return m.Avatar
	}
	return ""
}

func (m *Peer) GetInboxes() []*Cafe {
	if m != nil {
		return m.Inboxes
	}
	return nil
}

func (m *Peer) GetCreated() *timestamp.Timestamp {
	if m != nil {
		return m.Created
	}
	return nil
}

func (m *Peer) GetUpdated() *timestamp.Timestamp {
	if m != nil {
		return m.Updated
	}
	return nil
}

type PeerList struct {
	Items                []*Peer  `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *PeerList) Reset()         { *m = PeerList{} }
func (m *PeerList) String() string { return proto.CompactTextString(m) }
func (*PeerList) ProtoMessage()    {}
func (*PeerList) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{4}
}

func (m *PeerList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_PeerList.Unmarshal(m, b)
}
func (m *PeerList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_PeerList.Marshal(b, m, deterministic)
}
func (m *PeerList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_PeerList.Merge(m, src)
}
func (m *PeerList) XXX_Size() int {
	return xxx_messageInfo_PeerList.Size(m)
}
func (m *PeerList) XXX_DiscardUnknown() {
	xxx_messageInfo_PeerList.DiscardUnknown(m)
}

var xxx_messageInfo_PeerList proto.InternalMessageInfo

func (m *PeerList) GetItems() []*Peer {
	if m != nil {
		return m.Items
	}
	return nil
}

type User struct {
	Address              string   `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Name                 string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Avatar               string   `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *User) Reset()         { *m = User{} }
func (m *User) String() string { return proto.CompactTextString(m) }
func (*User) ProtoMessage()    {}
func (*User) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{5}
}

func (m *User) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_User.Unmarshal(m, b)
}
func (m *User) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_User.Marshal(b, m, deterministic)
}
func (m *User) XXX_Merge(src proto.Message) {
	xxx_messageInfo_User.Merge(m, src)
}
func (m *User) XXX_Size() int {
	return xxx_messageInfo_User.Size(m)
}
func (m *User) XXX_DiscardUnknown() {
	xxx_messageInfo_User.DiscardUnknown(m)
}

var xxx_messageInfo_User proto.InternalMessageInfo

func (m *User) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *User) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *User) GetAvatar() string {
	if m != nil {
		return m.Avatar
	}
	return ""
}

type Contact struct {
	Address              string   `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"`
	Name                 string   `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"`
	Avatar               string   `protobuf:"bytes,3,opt,name=avatar,proto3" json:"avatar,omitempty"`
	Peers                []*Peer  `protobuf:"bytes,4,rep,name=peers,proto3" json:"peers,omitempty"`
	Threads              []string `protobuf:"bytes,5,rep,name=threads,proto3" json:"threads,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Contact) Reset()         { *m = Contact{} }
func (m *Contact) String() string { return proto.CompactTextString(m) }
func (*Contact) ProtoMessage()    {}
func (*Contact) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{6}
}

func (m *Contact) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Contact.Unmarshal(m, b)
}
func (m *Contact) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Contact.Marshal(b, m, deterministic)
}
func (m *Contact) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Contact.Merge(m, src)
}
func (m *Contact) XXX_Size() int {
	return xxx_messageInfo_Contact.Size(m)
}
func (m *Contact) XXX_DiscardUnknown() {
	xxx_messageInfo_Contact.DiscardUnknown(m)
}

var xxx_messageInfo_Contact proto.InternalMessageInfo

func (m *Contact) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *Contact) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *Contact) GetAvatar() string {
	if m != nil {
		return m.Avatar
	}
	return ""
}

func (m *Contact) GetPeers() []*Peer {
	if m != nil {
		return m.Peers
	}
	return nil
}

func (m *Contact) GetThreads() []string {
	if m != nil {
		return m.Threads
	}
	return nil
}

type ContactList struct {
	Items                []*Contact `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}   `json:"-"`
	XXX_unrecognized     []byte     `json:"-"`
	XXX_sizecache        int32      `json:"-"`
}

func (m *ContactList) Reset()         { *m = ContactList{} }
func (m *ContactList) String() string { return proto.CompactTextString(m) }
func (*ContactList) ProtoMessage()    {}
func (*ContactList) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{7}
}

func (m *ContactList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ContactList.Unmarshal(m, b)
}
func (m *ContactList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ContactList.Marshal(b, m, deterministic)
}
func (m *ContactList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ContactList.Merge(m, src)
}
func (m *ContactList) XXX_Size() int {
	return xxx_messageInfo_ContactList.Size(m)
}
func (m *ContactList) XXX_DiscardUnknown() {
	xxx_messageInfo_ContactList.DiscardUnknown(m)
}

var xxx_messageInfo_ContactList proto.InternalMessageInfo

func (m *ContactList) GetItems() []*Contact {
	if m != nil {
		return m.Items
	}
	return nil
}

type Thread struct {
	Id        string         `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Key       string         `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
	Sk        []byte         `protobuf:"bytes,3,opt,name=sk,proto3" json:"sk,omitempty"`
	Name      string         `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"`
	Schema    string         `protobuf:"bytes,5,opt,name=schema,proto3" json:"schema,omitempty"`
	Initiator string         `protobuf:"bytes,6,opt,name=initiator,proto3" json:"initiator,omitempty"`
	Type      Thread_Type    `protobuf:"varint,7,opt,name=type,proto3,enum=Thread_Type" json:"type,omitempty"`
	Sharing   Thread_Sharing `protobuf:"varint,8,opt,name=sharing,proto3,enum=Thread_Sharing" json:"sharing,omitempty"`
	Whitelist []string       `protobuf:"bytes,9,rep,name=whitelist,proto3" json:"whitelist,omitempty"`
	State     Thread_State   `protobuf:"varint,10,opt,name=state,proto3,enum=Thread_State" json:"state,omitempty"` // Deprecated: Do not use.
	Head      string         `protobuf:"bytes,11,opt,name=head,proto3" json:"head,omitempty"`
	// view info
	HeadBlocks           []*Block `protobuf:"bytes,101,rep,name=head_blocks,json=headBlocks,proto3" json:"head_blocks,omitempty"`
	SchemaNode           *Node    `protobuf:"bytes,102,opt,name=schema_node,json=schemaNode,proto3" json:"schema_node,omitempty"`
	BlockCount           int32    `protobuf:"varint,103,opt,name=block_count,json=blockCount,proto3" json:"block_count,omitempty"`
	PeerCount            int32    `protobuf:"varint,104,opt,name=peer_count,json=peerCount,proto3" json:"peer_count,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Thread) Reset()         { *m = Thread{} }
func (m *Thread) String() string { return proto.CompactTextString(m) }
func (*Thread) ProtoMessage()    {}
func (*Thread) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{8}
}

func (m *Thread) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Thread.Unmarshal(m, b)
}
func (m *Thread) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Thread.Marshal(b, m, deterministic)
}
func (m *Thread) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Thread.Merge(m, src)
}
func (m *Thread) XXX_Size() int {
	return xxx_messageInfo_Thread.Size(m)
}
func (m *Thread) XXX_DiscardUnknown() {
	xxx_messageInfo_Thread.DiscardUnknown(m)
}

var xxx_messageInfo_Thread proto.InternalMessageInfo

func (m *Thread) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *Thread) GetKey() string {
	if m != nil {
		return m.Key
	}
	return ""
}

func (m *Thread) GetSk() []byte {
	if m != nil {
		return m.Sk
	}
	return nil
}

func (m *Thread) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *Thread) GetSchema() string {
	if m != nil {
		return m.Schema
	}
	return ""
}

func (m *Thread) GetInitiator() string {
	if m != nil {
		return m.Initiator
	}
	return ""
}

func (m *Thread) GetType() Thread_Type {
	if m != nil {
		return m.Type
	}
	return Thread_PRIVATE
}

func (m *Thread) GetSharing() Thread_Sharing {
	if m != nil {
		return m.Sharing
	}
	return Thread_NOT_SHARED
}

func (m *Thread) GetWhitelist() []string {
	if m != nil {
		return m.Whitelist
	}
	return nil
}

// Deprecated: Do not use.
func (m *Thread) GetState() Thread_State {
	if m != nil {
		return m.State
	}
	return Thread_LOADING_TAIL
}

func (m *Thread) GetHead() string {
	if m != nil {
		return m.Head
	}
	return ""
}

func (m *Thread) GetHeadBlocks() []*Block {
	if m != nil {
		return m.HeadBlocks
	}
	return nil
}

func (m *Thread) GetSchemaNode() *Node {
	if m != nil {
		return m.SchemaNode
	}
	return nil
}

func (m *Thread) GetBlockCount() int32 {
	if m != nil {
		return m.BlockCount
	}
	return 0
}

func (m *Thread) GetPeerCount() int32 {
	if m != nil {
		return m.PeerCount
	}
	return 0
}

type ThreadList struct {
	Items                []*Thread `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

func (m *ThreadList) Reset()         { *m = ThreadList{} }
func (m *ThreadList) String() string { return proto.CompactTextString(m) }
func (*ThreadList) ProtoMessage()    {}
func (*ThreadList) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{9}
}

func (m *ThreadList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ThreadList.Unmarshal(m, b)
}
func (m *ThreadList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ThreadList.Marshal(b, m, deterministic)
}
func (m *ThreadList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ThreadList.Merge(m, src)
}
func (m *ThreadList) XXX_Size() int {
	return xxx_messageInfo_ThreadList.Size(m)
}
func (m *ThreadList) XXX_DiscardUnknown() {
	xxx_messageInfo_ThreadList.DiscardUnknown(m)
}

var xxx_messageInfo_ThreadList proto.InternalMessageInfo

func (m *ThreadList) GetItems() []*Thread {
	if m != nil {
		return m.Items
	}
	return nil
}

type ThreadPeer struct {
	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Thread               string   `protobuf:"bytes,2,opt,name=thread,proto3" json:"thread,omitempty"`
	Welcomed             bool     `protobuf:"varint,3,opt,name=welcomed,proto3" json:"welcomed,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *ThreadPeer) Reset()         { *m = ThreadPeer{} }
func (m *ThreadPeer) String() string { return proto.CompactTextString(m) }
func (*ThreadPeer) ProtoMessage()    {}
func (*ThreadPeer) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{10}
}

func (m *ThreadPeer) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_ThreadPeer.Unmarshal(m, b)
}
func (m *ThreadPeer) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_ThreadPeer.Marshal(b, m, deterministic)
}
func (m *ThreadPeer) XXX_Merge(src proto.Message) {
	xxx_messageInfo_ThreadPeer.Merge(m, src)
}
func (m *ThreadPeer) XXX_Size() int {
	return xxx_messageInfo_ThreadPeer.Size(m)
}
func (m *ThreadPeer) XXX_DiscardUnknown() {
	xxx_messageInfo_ThreadPeer.DiscardUnknown(m)
}

var xxx_messageInfo_ThreadPeer proto.InternalMessageInfo

func (m *ThreadPeer) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *ThreadPeer) GetThread() string {
	if m != nil {
		return m.Thread
	}
	return ""
}

func (m *ThreadPeer) GetWelcomed() bool {
	if m != nil {
		return m.Welcomed
	}
	return false
}

type Block struct {
	Id       string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Thread   string               `protobuf:"bytes,2,opt,name=thread,proto3" json:"thread,omitempty"`
	Author   string               `protobuf:"bytes,3,opt,name=author,proto3" json:"author,omitempty"`
	Type     Block_BlockType      `protobuf:"varint,4,opt,name=type,proto3,enum=Block_BlockType" json:"type,omitempty"`
	Date     *timestamp.Timestamp `protobuf:"bytes,5,opt,name=date,proto3" json:"date,omitempty"`
	Parents  []string             `protobuf:"bytes,6,rep,name=parents,proto3" json:"parents,omitempty"`
	Target   string               `protobuf:"bytes,7,opt,name=target,proto3" json:"target,omitempty"`
	Data     string               `protobuf:"bytes,9,opt,name=data,proto3" json:"data,omitempty"`
	Body     string               `protobuf:"bytes,8,opt,name=body,proto3" json:"body,omitempty"`
	Status   Block_BlockStatus    `protobuf:"varint,10,opt,name=status,proto3,enum=Block_BlockStatus" json:"status,omitempty"`
	Attempts int32                `protobuf:"varint,11,opt,name=attempts,proto3" json:"attempts,omitempty"`
	// view info
	User                 *User    `protobuf:"bytes,101,opt,name=user,proto3" json:"user,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Block) Reset()         { *m = Block{} }
func (m *Block) String() string { return proto.CompactTextString(m) }
func (*Block) ProtoMessage()    {}
func (*Block) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{11}
}

func (m *Block) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Block.Unmarshal(m, b)
}
func (m *Block) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Block.Marshal(b, m, deterministic)
}
func (m *Block) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Block.Merge(m, src)
}
func (m *Block) XXX_Size() int {
	return xxx_messageInfo_Block.Size(m)
}
func (m *Block) XXX_DiscardUnknown() {
	xxx_messageInfo_Block.DiscardUnknown(m)
}

var xxx_messageInfo_Block proto.InternalMessageInfo

func (m *Block) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *Block) GetThread() string {
	if m != nil {
		return m.Thread
	}
	return ""
}

func (m *Block) GetAuthor() string {
	if m != nil {
		return m.Author
	}
	return ""
}

func (m *Block) GetType() Block_BlockType {
	if m != nil {
		return m.Type
	}
	return Block_MERGE
}

func (m *Block) GetDate() *timestamp.Timestamp {
	if m != nil {
		return m.Date
	}
	return nil
}

func (m *Block) GetParents() []string {
	if m != nil {
		return m.Parents
	}
	return nil
}

func (m *Block) GetTarget() string {
	if m != nil {
		return m.Target
	}
	return ""
}

func (m *Block) GetData() string {
	if m != nil {
		return m.Data
	}
	return ""
}

func (m *Block) GetBody() string {
	if m != nil {
		return m.Body
	}
	return ""
}

func (m *Block) GetStatus() Block_BlockStatus {
	if m != nil {
		return m.Status
	}
	return Block_READY
}

func (m *Block) GetAttempts() int32 {
	if m != nil {
		return m.Attempts
	}
	return 0
}

func (m *Block) GetUser() *User {
	if m != nil {
		return m.User
	}
	return nil
}

type BlockList struct {
	Items                []*Block `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *BlockList) Reset()         { *m = BlockList{} }
func (m *BlockList) String() string { return proto.CompactTextString(m) }
func (*BlockList) ProtoMessage()    {}
func (*BlockList) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{12}
}

func (m *BlockList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockList.Unmarshal(m, b)
}
func (m *BlockList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockList.Marshal(b, m, deterministic)
}
func (m *BlockList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockList.Merge(m, src)
}
func (m *BlockList) XXX_Size() int {
	return xxx_messageInfo_BlockList.Size(m)
}
func (m *BlockList) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockList.DiscardUnknown(m)
}

var xxx_messageInfo_BlockList proto.InternalMessageInfo

func (m *BlockList) GetItems() []*Block {
	if m != nil {
		return m.Items
	}
	return nil
}

type BlockMessage struct {
	Id                   string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Peer                 string               `protobuf:"bytes,2,opt,name=peer,proto3" json:"peer,omitempty"`
	Env                  *Envelope            `protobuf:"bytes,3,opt,name=env,proto3" json:"env,omitempty"`
	Date                 *timestamp.Timestamp `protobuf:"bytes,4,opt,name=date,proto3" json:"date,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *BlockMessage) Reset()         { *m = BlockMessage{} }
func (m *BlockMessage) String() string { return proto.CompactTextString(m) }
func (*BlockMessage) ProtoMessage()    {}
func (*BlockMessage) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{13}
}

func (m *BlockMessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BlockMessage.Unmarshal(m, b)
}
func (m *BlockMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BlockMessage.Marshal(b, m, deterministic)
}
func (m *BlockMessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BlockMessage.Merge(m, src)
}
func (m *BlockMessage) XXX_Size() int {
	return xxx_messageInfo_BlockMessage.Size(m)
}
func (m *BlockMessage) XXX_DiscardUnknown() {
	xxx_messageInfo_BlockMessage.DiscardUnknown(m)
}

var xxx_messageInfo_BlockMessage proto.InternalMessageInfo

func (m *BlockMessage) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *BlockMessage) GetPeer() string {
	if m != nil {
		return m.Peer
	}
	return ""
}

func (m *BlockMessage) GetEnv() *Envelope {
	if m != nil {
		return m.Env
	}
	return nil
}

func (m *BlockMessage) GetDate() *timestamp.Timestamp {
	if m != nil {
		return m.Date
	}
	return nil
}

type Invite struct {
	Id                   string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Block                []byte               `protobuf:"bytes,2,opt,name=block,proto3" json:"block,omitempty"`
	Name                 string               `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"`
	Inviter              *Peer                `protobuf:"bytes,4,opt,name=inviter,proto3" json:"inviter,omitempty"`
	Date                 *timestamp.Timestamp `protobuf:"bytes,5,opt,name=date,proto3" json:"date,omitempty"`
	Parents              []string             `protobuf:"bytes,6,rep,name=parents,proto3" json:"parents,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *Invite) Reset()         { *m = Invite{} }
func (m *Invite) String() string { return proto.CompactTextString(m) }
func (*Invite) ProtoMessage()    {}
func (*Invite) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{14}
}

func (m *Invite) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Invite.Unmarshal(m, b)
}
func (m *Invite) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Invite.Marshal(b, m, deterministic)
}
func (m *Invite) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Invite.Merge(m, src)
}
func (m *Invite) XXX_Size() int {
	return xxx_messageInfo_Invite.Size(m)
}
func (m *Invite) XXX_DiscardUnknown() {
	xxx_messageInfo_Invite.DiscardUnknown(m)
}

var xxx_messageInfo_Invite proto.InternalMessageInfo

func (m *Invite) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *Invite) GetBlock() []byte {
	if m != nil {
		return m.Block
	}
	return nil
}

func (m *Invite) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *Invite) GetInviter() *Peer {
	if m != nil {
		return m.Inviter
	}
	return nil
}

func (m *Invite) GetDate() *timestamp.Timestamp {
	if m != nil {
		return m.Date
	}
	return nil
}

func (m *Invite) GetParents() []string {
	if m != nil {
		return m.Parents
	}
	return nil
}

type InviteList struct {
	Items                []*Invite `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}  `json:"-"`
	XXX_unrecognized     []byte    `json:"-"`
	XXX_sizecache        int32     `json:"-"`
}

func (m *InviteList) Reset()         { *m = InviteList{} }
func (m *InviteList) String() string { return proto.CompactTextString(m) }
func (*InviteList) ProtoMessage()    {}
func (*InviteList) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{15}
}

func (m *InviteList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_InviteList.Unmarshal(m, b)
}
func (m *InviteList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_InviteList.Marshal(b, m, deterministic)
}
func (m *InviteList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_InviteList.Merge(m, src)
}
func (m *InviteList) XXX_Size() int {
	return xxx_messageInfo_InviteList.Size(m)
}
func (m *InviteList) XXX_DiscardUnknown() {
	xxx_messageInfo_InviteList.DiscardUnknown(m)
}

var xxx_messageInfo_InviteList proto.InternalMessageInfo

func (m *InviteList) GetItems() []*Invite {
	if m != nil {
		return m.Items
	}
	return nil
}

type FileIndex struct {
	Mill                 string               `protobuf:"bytes,1,opt,name=mill,proto3" json:"mill,omitempty"`
	Checksum             string               `protobuf:"bytes,2,opt,name=checksum,proto3" json:"checksum,omitempty"`
	Source               string               `protobuf:"bytes,3,opt,name=source,proto3" json:"source,omitempty"`
	Opts                 string               `protobuf:"bytes,4,opt,name=opts,proto3" json:"opts,omitempty"`
	Hash                 string               `protobuf:"bytes,5,opt,name=hash,proto3" json:"hash,omitempty"`
	Key                  string               `protobuf:"bytes,6,opt,name=key,proto3" json:"key,omitempty"`
	Media                string               `protobuf:"bytes,7,opt,name=media,proto3" json:"media,omitempty"`
	Name                 string               `protobuf:"bytes,8,opt,name=name,proto3" json:"name,omitempty"`
	Size                 int64                `protobuf:"varint,9,opt,name=size,proto3" json:"size,omitempty"`
	Added                *timestamp.Timestamp `protobuf:"bytes,10,opt,name=added,proto3" json:"added,omitempty"`
	Meta                 *_struct.Struct      `protobuf:"bytes,11,opt,name=meta,proto3" json:"meta,omitempty"`
	Targets              []string             `protobuf:"bytes,12,rep,name=targets,proto3" json:"targets,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *FileIndex) Reset()         { *m = FileIndex{} }
func (m *FileIndex) String() string { return proto.CompactTextString(m) }
func (*FileIndex) ProtoMessage()    {}
func (*FileIndex) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{16}
}

func (m *FileIndex) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_FileIndex.Unmarshal(m, b)
}
func (m *FileIndex) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_FileIndex.Marshal(b, m, deterministic)
}
func (m *FileIndex) XXX_Merge(src proto.Message) {
	xxx_messageInfo_FileIndex.Merge(m, src)
}
func (m *FileIndex) XXX_Size() int {
	return xxx_messageInfo_FileIndex.Size(m)
}
func (m *FileIndex) XXX_DiscardUnknown() {
	xxx_messageInfo_FileIndex.DiscardUnknown(m)
}

var xxx_messageInfo_FileIndex proto.InternalMessageInfo

func (m *FileIndex) GetMill() string {
	if m != nil {
		return m.Mill
	}
	return ""
}

func (m *FileIndex) GetChecksum() string {
	if m != nil {
		return m.Checksum
	}
	return ""
}

func (m *FileIndex) GetSource() string {
	if m != nil {
		return m.Source
	}
	return ""
}

func (m *FileIndex) GetOpts() string {
	if m != nil {
		return m.Opts
	}
	return ""
}

func (m *FileIndex) GetHash() string {
	if m != nil {
		return m.Hash
	}
	return ""
}

func (m *FileIndex) GetKey() string {
	if m != nil {
		return m.Key
	}
	return ""
}

func (m *FileIndex) GetMedia() string {
	if m != nil {
		return m.Media
	}
	return ""
}

func (m *FileIndex) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *FileIndex) GetSize() int64 {
	if m != nil {
		return m.Size
	}
	return 0
}

func (m *FileIndex) GetAdded() *timestamp.Timestamp {
	if m != nil {
		return m.Added
	}
	return nil
}

func (m *FileIndex) GetMeta() *_struct.Struct {
	if m != nil {
		return m.Meta
	}
	return nil
}

func (m *FileIndex) GetTargets() []string {
	if m != nil {
		return m.Targets
	}
	return nil
}

type Node struct {
	Name                 string            `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
	Pin                  bool              `protobuf:"varint,2,opt,name=pin,proto3" json:"pin,omitempty"`
	Plaintext            bool              `protobuf:"varint,3,opt,name=plaintext,proto3" json:"plaintext,omitempty"`
	Mill                 string            `protobuf:"bytes,4,opt,name=mill,proto3" json:"mill,omitempty"`
	Opts                 map[string]string `protobuf:"bytes,5,rep,name=opts,proto3" json:"opts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	JsonSchema           *_struct.Struct   `protobuf:"bytes,6,opt,name=json_schema,json=jsonSchema,proto3" json:"json_schema,omitempty"`
	Links                map[string]*Link  `protobuf:"bytes,8,rep,name=links,proto3" json:"links,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

func (m *Node) Reset()         { *m = Node{} }
func (m *Node) String() string { return proto.CompactTextString(m) }
func (*Node) ProtoMessage()    {}
func (*Node) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{17}
}

func (m *Node) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Node.Unmarshal(m, b)
}
func (m *Node) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Node.Marshal(b, m, deterministic)
}
func (m *Node) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Node.Merge(m, src)
}
func (m *Node) XXX_Size() int {
	return xxx_messageInfo_Node.Size(m)
}
func (m *Node) XXX_DiscardUnknown() {
	xxx_messageInfo_Node.DiscardUnknown(m)
}

var xxx_messageInfo_Node proto.InternalMessageInfo

func (m *Node) GetName() string {
	if m != nil {
		return m.Name
	}
	return ""
}

func (m *Node) GetPin() bool {
	if m != nil {
		return m.Pin
	}
	return false
}

func (m *Node) GetPlaintext() bool {
	if m != nil {
		return m.Plaintext
	}
	return false
}

func (m *Node) GetMill() string {
	if m != nil {
		return m.Mill
	}
	return ""
}

func (m *Node) GetOpts() map[string]string {
	if m != nil {
		return m.Opts
	}
	return nil
}

func (m *Node) GetJsonSchema() *_struct.Struct {
	if m != nil {
		return m.JsonSchema
	}
	return nil
}

func (m *Node) GetLinks() map[string]*Link {
	if m != nil {
		return m.Links
	}
	return nil
}

type Link struct {
	Use                  string            `protobuf:"bytes,1,opt,name=use,proto3" json:"use,omitempty"`
	Pin                  bool              `protobuf:"varint,2,opt,name=pin,proto3" json:"pin,omitempty"`
	Plaintext            bool              `protobuf:"varint,3,opt,name=plaintext,proto3" json:"plaintext,omitempty"`
	Mill                 string            `protobuf:"bytes,4,opt,name=mill,proto3" json:"mill,omitempty"`
	Opts                 map[string]string `protobuf:"bytes,5,rep,name=opts,proto3" json:"opts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	JsonSchema           *_struct.Struct   `protobuf:"bytes,6,opt,name=json_schema,json=jsonSchema,proto3" json:"json_schema,omitempty"`
	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
	XXX_unrecognized     []byte            `json:"-"`
	XXX_sizecache        int32             `json:"-"`
}

func (m *Link) Reset()         { *m = Link{} }
func (m *Link) String() string { return proto.CompactTextString(m) }
func (*Link) ProtoMessage()    {}
func (*Link) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{18}
}

func (m *Link) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Link.Unmarshal(m, b)
}
func (m *Link) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Link.Marshal(b, m, deterministic)
}
func (m *Link) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Link.Merge(m, src)
}
func (m *Link) XXX_Size() int {
	return xxx_messageInfo_Link.Size(m)
}
func (m *Link) XXX_DiscardUnknown() {
	xxx_messageInfo_Link.DiscardUnknown(m)
}

var xxx_messageInfo_Link proto.InternalMessageInfo

func (m *Link) GetUse() string {
	if m != nil {
		return m.Use
	}
	return ""
}

func (m *Link) GetPin() bool {
	if m != nil {
		return m.Pin
	}
	return false
}

func (m *Link) GetPlaintext() bool {
	if m != nil {
		return m.Plaintext
	}
	return false
}

func (m *Link) GetMill() string {
	if m != nil {
		return m.Mill
	}
	return ""
}

func (m *Link) GetOpts() map[string]string {
	if m != nil {
		return m.Opts
	}
	return nil
}

func (m *Link) GetJsonSchema() *_struct.Struct {
	if m != nil {
		return m.JsonSchema
	}
	return nil
}

type Notification struct {
	Id          string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Date        *timestamp.Timestamp `protobuf:"bytes,2,opt,name=date,proto3" json:"date,omitempty"`
	Actor       string               `protobuf:"bytes,3,opt,name=actor,proto3" json:"actor,omitempty"`
	Subject     string               `protobuf:"bytes,4,opt,name=subject,proto3" json:"subject,omitempty"`
	SubjectDesc string               `protobuf:"bytes,5,opt,name=subject_desc,json=subjectDesc,proto3" json:"subject_desc,omitempty"`
	Block       string               `protobuf:"bytes,6,opt,name=block,proto3" json:"block,omitempty"`
	Target      string               `protobuf:"bytes,7,opt,name=target,proto3" json:"target,omitempty"`
	Type        Notification_Type    `protobuf:"varint,8,opt,name=type,proto3,enum=Notification_Type" json:"type,omitempty"`
	Body        string               `protobuf:"bytes,9,opt,name=body,proto3" json:"body,omitempty"`
	Read        bool                 `protobuf:"varint,10,opt,name=read,proto3" json:"read,omitempty"`
	// view info
	User                 *User    `protobuf:"bytes,101,opt,name=user,proto3" json:"user,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Notification) Reset()         { *m = Notification{} }
func (m *Notification) String() string { return proto.CompactTextString(m) }
func (*Notification) ProtoMessage()    {}
func (*Notification) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{19}
}

func (m *Notification) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Notification.Unmarshal(m, b)
}
func (m *Notification) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Notification.Marshal(b, m, deterministic)
}
func (m *Notification) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Notification.Merge(m, src)
}
func (m *Notification) XXX_Size() int {
	return xxx_messageInfo_Notification.Size(m)
}
func (m *Notification) XXX_DiscardUnknown() {
	xxx_messageInfo_Notification.DiscardUnknown(m)
}

var xxx_messageInfo_Notification proto.InternalMessageInfo

func (m *Notification) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *Notification) GetDate() *timestamp.Timestamp {
	if m != nil {
		return m.Date
	}
	return nil
}

func (m *Notification) GetActor() string {
	if m != nil {
		return m.Actor
	}
	return ""
}

func (m *Notification) GetSubject() string {
	if m != nil {
		return m.Subject
	}
	return ""
}

func (m *Notification) GetSubjectDesc() string {
	if m != nil {
		return m.SubjectDesc
	}
	return ""
}

func (m *Notification) GetBlock() string {
	if m != nil {
		return m.Block
	}
	return ""
}

func (m *Notification) GetTarget() string {
	if m != nil {
		return m.Target
	}
	return ""
}

func (m *Notification) GetType() Notification_Type {
	if m != nil {
		return m.Type
	}
	return Notification_INVITE_RECEIVED
}

func (m *Notification) GetBody() string {
	if m != nil {
		return m.Body
	}
	return ""
}

func (m *Notification) GetRead() bool {
	if m != nil {
		return m.Read
	}
	return false
}

func (m *Notification) GetUser() *User {
	if m != nil {
		return m.User
	}
	return nil
}

type NotificationList struct {
	Items                []*Notification `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}        `json:"-"`
	XXX_unrecognized     []byte          `json:"-"`
	XXX_sizecache        int32           `json:"-"`
}

func (m *NotificationList) Reset()         { *m = NotificationList{} }
func (m *NotificationList) String() string { return proto.CompactTextString(m) }
func (*NotificationList) ProtoMessage()    {}
func (*NotificationList) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{20}
}

func (m *NotificationList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_NotificationList.Unmarshal(m, b)
}
func (m *NotificationList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_NotificationList.Marshal(b, m, deterministic)
}
func (m *NotificationList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_NotificationList.Merge(m, src)
}
func (m *NotificationList) XXX_Size() int {
	return xxx_messageInfo_NotificationList.Size(m)
}
func (m *NotificationList) XXX_DiscardUnknown() {
	xxx_messageInfo_NotificationList.DiscardUnknown(m)
}

var xxx_messageInfo_NotificationList proto.InternalMessageInfo

func (m *NotificationList) GetItems() []*Notification {
	if m != nil {
		return m.Items
	}
	return nil
}

type Cafe struct {
	Peer                 string   `protobuf:"bytes,1,opt,name=peer,proto3" json:"peer,omitempty"`
	Address              string   `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
	Api                  string   `protobuf:"bytes,3,opt,name=api,proto3" json:"api,omitempty"`
	Protocol             string   `protobuf:"bytes,4,opt,name=protocol,proto3" json:"protocol,omitempty"`
	Node                 string   `protobuf:"bytes,5,opt,name=node,proto3" json:"node,omitempty"`
	Url                  string   `protobuf:"bytes,6,opt,name=url,proto3" json:"url,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *Cafe) Reset()         { *m = Cafe{} }
func (m *Cafe) String() string { return proto.CompactTextString(m) }
func (*Cafe) ProtoMessage()    {}
func (*Cafe) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{21}
}

func (m *Cafe) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_Cafe.Unmarshal(m, b)
}
func (m *Cafe) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_Cafe.Marshal(b, m, deterministic)
}
func (m *Cafe) XXX_Merge(src proto.Message) {
	xxx_messageInfo_Cafe.Merge(m, src)
}
func (m *Cafe) XXX_Size() int {
	return xxx_messageInfo_Cafe.Size(m)
}
func (m *Cafe) XXX_DiscardUnknown() {
	xxx_messageInfo_Cafe.DiscardUnknown(m)
}

var xxx_messageInfo_Cafe proto.InternalMessageInfo

func (m *Cafe) GetPeer() string {
	if m != nil {
		return m.Peer
	}
	return ""
}

func (m *Cafe) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *Cafe) GetApi() string {
	if m != nil {
		return m.Api
	}
	return ""
}

func (m *Cafe) GetProtocol() string {
	if m != nil {
		return m.Protocol
	}
	return ""
}

func (m *Cafe) GetNode() string {
	if m != nil {
		return m.Node
	}
	return ""
}

func (m *Cafe) GetUrl() string {
	if m != nil {
		return m.Url
	}
	return ""
}

type CafeSession struct {
	Id                   string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Access               string               `protobuf:"bytes,2,opt,name=access,proto3" json:"access,omitempty"`
	Exp                  *timestamp.Timestamp `protobuf:"bytes,3,opt,name=exp,proto3" json:"exp,omitempty"`
	Refresh              string               `protobuf:"bytes,4,opt,name=refresh,proto3" json:"refresh,omitempty"`
	Rexp                 *timestamp.Timestamp `protobuf:"bytes,5,opt,name=rexp,proto3" json:"rexp,omitempty"`
	Subject              string               `protobuf:"bytes,6,opt,name=subject,proto3" json:"subject,omitempty"`
	Type                 string               `protobuf:"bytes,7,opt,name=type,proto3" json:"type,omitempty"`
	Cafe                 *Cafe                `protobuf:"bytes,8,opt,name=cafe,proto3" json:"cafe,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *CafeSession) Reset()         { *m = CafeSession{} }
func (m *CafeSession) String() string { return proto.CompactTextString(m) }
func (*CafeSession) ProtoMessage()    {}
func (*CafeSession) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{22}
}

func (m *CafeSession) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeSession.Unmarshal(m, b)
}
func (m *CafeSession) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeSession.Marshal(b, m, deterministic)
}
func (m *CafeSession) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeSession.Merge(m, src)
}
func (m *CafeSession) XXX_Size() int {
	return xxx_messageInfo_CafeSession.Size(m)
}
func (m *CafeSession) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeSession.DiscardUnknown(m)
}

var xxx_messageInfo_CafeSession proto.InternalMessageInfo

func (m *CafeSession) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *CafeSession) GetAccess() string {
	if m != nil {
		return m.Access
	}
	return ""
}

func (m *CafeSession) GetExp() *timestamp.Timestamp {
	if m != nil {
		return m.Exp
	}
	return nil
}

func (m *CafeSession) GetRefresh() string {
	if m != nil {
		return m.Refresh
	}
	return ""
}

func (m *CafeSession) GetRexp() *timestamp.Timestamp {
	if m != nil {
		return m.Rexp
	}
	return nil
}

func (m *CafeSession) GetSubject() string {
	if m != nil {
		return m.Subject
	}
	return ""
}

func (m *CafeSession) GetType() string {
	if m != nil {
		return m.Type
	}
	return ""
}

func (m *CafeSession) GetCafe() *Cafe {
	if m != nil {
		return m.Cafe
	}
	return nil
}

type CafeSessionList struct {
	Items                []*CafeSession `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *CafeSessionList) Reset()         { *m = CafeSessionList{} }
func (m *CafeSessionList) String() string { return proto.CompactTextString(m) }
func (*CafeSessionList) ProtoMessage()    {}
func (*CafeSessionList) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{23}
}

func (m *CafeSessionList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeSessionList.Unmarshal(m, b)
}
func (m *CafeSessionList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeSessionList.Marshal(b, m, deterministic)
}
func (m *CafeSessionList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeSessionList.Merge(m, src)
}
func (m *CafeSessionList) XXX_Size() int {
	return xxx_messageInfo_CafeSessionList.Size(m)
}
func (m *CafeSessionList) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeSessionList.DiscardUnknown(m)
}

var xxx_messageInfo_CafeSessionList proto.InternalMessageInfo

func (m *CafeSessionList) GetItems() []*CafeSession {
	if m != nil {
		return m.Items
	}
	return nil
}

type CafeRequest struct {
	Id                   string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Peer                 string               `protobuf:"bytes,2,opt,name=peer,proto3" json:"peer,omitempty"`
	Target               string               `protobuf:"bytes,3,opt,name=target,proto3" json:"target,omitempty"`
	Cafe                 *Cafe                `protobuf:"bytes,4,opt,name=cafe,proto3" json:"cafe,omitempty"`
	Group                string               `protobuf:"bytes,8,opt,name=group,proto3" json:"group,omitempty"`
	SyncGroup            string               `protobuf:"bytes,10,opt,name=sync_group,json=syncGroup,proto3" json:"sync_group,omitempty"`
	Type                 CafeRequest_Type     `protobuf:"varint,5,opt,name=type,proto3,enum=CafeRequest_Type" json:"type,omitempty"`
	Date                 *timestamp.Timestamp `protobuf:"bytes,6,opt,name=date,proto3" json:"date,omitempty"`
	Size                 int64                `protobuf:"varint,7,opt,name=size,proto3" json:"size,omitempty"`
	Status               CafeRequest_Status   `protobuf:"varint,9,opt,name=status,proto3,enum=CafeRequest_Status" json:"status,omitempty"`
	Attempts             int32                `protobuf:"varint,11,opt,name=attempts,proto3" json:"attempts,omitempty"`
	GroupSize            int64                `protobuf:"varint,12,opt,name=group_size,json=groupSize,proto3" json:"group_size,omitempty"`
	GroupTransferred     int64                `protobuf:"varint,13,opt,name=group_transferred,json=groupTransferred,proto3" json:"group_transferred,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *CafeRequest) Reset()         { *m = CafeRequest{} }
func (m *CafeRequest) String() string { return proto.CompactTextString(m) }
func (*CafeRequest) ProtoMessage()    {}
func (*CafeRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{24}
}

func (m *CafeRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeRequest.Unmarshal(m, b)
}
func (m *CafeRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeRequest.Marshal(b, m, deterministic)
}
func (m *CafeRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeRequest.Merge(m, src)
}
func (m *CafeRequest) XXX_Size() int {
	return xxx_messageInfo_CafeRequest.Size(m)
}
func (m *CafeRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeRequest.DiscardUnknown(m)
}

var xxx_messageInfo_CafeRequest proto.InternalMessageInfo

func (m *CafeRequest) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *CafeRequest) GetPeer() string {
	if m != nil {
		return m.Peer
	}
	return ""
}

func (m *CafeRequest) GetTarget() string {
	if m != nil {
		return m.Target
	}
	return ""
}

func (m *CafeRequest) GetCafe() *Cafe {
	if m != nil {
		return m.Cafe
	}
	return nil
}

func (m *CafeRequest) GetGroup() string {
	if m != nil {
		return m.Group
	}
	return ""
}

func (m *CafeRequest) GetSyncGroup() string {
	if m != nil {
		return m.SyncGroup
	}
	return ""
}

func (m *CafeRequest) GetType() CafeRequest_Type {
	if m != nil {
		return m.Type
	}
	return CafeRequest_STORE
}

func (m *CafeRequest) GetDate() *timestamp.Timestamp {
	if m != nil {
		return m.Date
	}
	return nil
}

func (m *CafeRequest) GetSize() int64 {
	if m != nil {
		return m.Size
	}
	return 0
}

func (m *CafeRequest) GetStatus() CafeRequest_Status {
	if m != nil {
		return m.Status
	}
	return CafeRequest_NEW
}

func (m *CafeRequest) GetAttempts() int32 {
	if m != nil {
		return m.Attempts
	}
	return 0
}

func (m *CafeRequest) GetGroupSize() int64 {
	if m != nil {
		return m.GroupSize
	}
	return 0
}

func (m *CafeRequest) GetGroupTransferred() int64 {
	if m != nil {
		return m.GroupTransferred
	}
	return 0
}

type CafeRequestList struct {
	Items                []*CafeRequest `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
	XXX_unrecognized     []byte         `json:"-"`
	XXX_sizecache        int32          `json:"-"`
}

func (m *CafeRequestList) Reset()         { *m = CafeRequestList{} }
func (m *CafeRequestList) String() string { return proto.CompactTextString(m) }
func (*CafeRequestList) ProtoMessage()    {}
func (*CafeRequestList) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{25}
}

func (m *CafeRequestList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeRequestList.Unmarshal(m, b)
}
func (m *CafeRequestList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeRequestList.Marshal(b, m, deterministic)
}
func (m *CafeRequestList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeRequestList.Merge(m, src)
}
func (m *CafeRequestList) XXX_Size() int {
	return xxx_messageInfo_CafeRequestList.Size(m)
}
func (m *CafeRequestList) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeRequestList.DiscardUnknown(m)
}

var xxx_messageInfo_CafeRequestList proto.InternalMessageInfo

func (m *CafeRequestList) GetItems() []*CafeRequest {
	if m != nil {
		return m.Items
	}
	return nil
}

type CafeSyncGroupStatus struct {
	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	NumTotal             int32    `protobuf:"varint,2,opt,name=num_total,json=numTotal,proto3" json:"num_total,omitempty"`
	NumPending           int32    `protobuf:"varint,3,opt,name=num_pending,json=numPending,proto3" json:"num_pending,omitempty"`
	NumComplete          int32    `protobuf:"varint,4,opt,name=num_complete,json=numComplete,proto3" json:"num_complete,omitempty"`
	SizeTotal            int64    `protobuf:"varint,5,opt,name=size_total,json=sizeTotal,proto3" json:"size_total,omitempty"`
	SizePending          int64    `protobuf:"varint,6,opt,name=size_pending,json=sizePending,proto3" json:"size_pending,omitempty"`
	SizeComplete         int64    `protobuf:"varint,7,opt,name=size_complete,json=sizeComplete,proto3" json:"size_complete,omitempty"`
	GroupsSizeTotal      int64    `protobuf:"varint,8,opt,name=groups_size_total,json=groupsSizeTotal,proto3" json:"groups_size_total,omitempty"`
	GroupsSizeComplete   int64    `protobuf:"varint,9,opt,name=groups_size_complete,json=groupsSizeComplete,proto3" json:"groups_size_complete,omitempty"`
	Error                string   `protobuf:"bytes,50,opt,name=error,proto3" json:"error,omitempty"`
	ErrorId              string   `protobuf:"bytes,51,opt,name=error_id,json=errorId,proto3" json:"error_id,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *CafeSyncGroupStatus) Reset()         { *m = CafeSyncGroupStatus{} }
func (m *CafeSyncGroupStatus) String() string { return proto.CompactTextString(m) }
func (*CafeSyncGroupStatus) ProtoMessage()    {}
func (*CafeSyncGroupStatus) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{26}
}

func (m *CafeSyncGroupStatus) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeSyncGroupStatus.Unmarshal(m, b)
}
func (m *CafeSyncGroupStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeSyncGroupStatus.Marshal(b, m, deterministic)
}
func (m *CafeSyncGroupStatus) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeSyncGroupStatus.Merge(m, src)
}
func (m *CafeSyncGroupStatus) XXX_Size() int {
	return xxx_messageInfo_CafeSyncGroupStatus.Size(m)
}
func (m *CafeSyncGroupStatus) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeSyncGroupStatus.DiscardUnknown(m)
}

var xxx_messageInfo_CafeSyncGroupStatus proto.InternalMessageInfo

func (m *CafeSyncGroupStatus) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *CafeSyncGroupStatus) GetNumTotal() int32 {
	if m != nil {
		return m.NumTotal
	}
	return 0
}

func (m *CafeSyncGroupStatus) GetNumPending() int32 {
	if m != nil {
		return m.NumPending
	}
	return 0
}

func (m *CafeSyncGroupStatus) GetNumComplete() int32 {
	if m != nil {
		return m.NumComplete
	}
	return 0
}

func (m *CafeSyncGroupStatus) GetSizeTotal() int64 {
	if m != nil {
		return m.SizeTotal
	}
	return 0
}

func (m *CafeSyncGroupStatus) GetSizePending() int64 {
	if m != nil {
		return m.SizePending
	}
	return 0
}

func (m *CafeSyncGroupStatus) GetSizeComplete() int64 {
	if m != nil {
		return m.SizeComplete
	}
	return 0
}

func (m *CafeSyncGroupStatus) GetGroupsSizeTotal() int64 {
	if m != nil {
		return m.GroupsSizeTotal
	}
	return 0
}

func (m *CafeSyncGroupStatus) GetGroupsSizeComplete() int64 {
	if m != nil {
		return m.GroupsSizeComplete
	}
	return 0
}

func (m *CafeSyncGroupStatus) GetError() string {
	if m != nil {
		return m.Error
	}
	return ""
}

func (m *CafeSyncGroupStatus) GetErrorId() string {
	if m != nil {
		return m.ErrorId
	}
	return ""
}

type CafeHTTPRequest struct {
	Type                 CafeHTTPRequest_Type `protobuf:"varint,1,opt,name=type,proto3,enum=CafeHTTPRequest_Type" json:"type,omitempty"`
	Url                  string               `protobuf:"bytes,2,opt,name=url,proto3" json:"url,omitempty"`
	Headers              map[string]string    `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
	Path                 string               `protobuf:"bytes,4,opt,name=path,proto3" json:"path,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *CafeHTTPRequest) Reset()         { *m = CafeHTTPRequest{} }
func (m *CafeHTTPRequest) String() string { return proto.CompactTextString(m) }
func (*CafeHTTPRequest) ProtoMessage()    {}
func (*CafeHTTPRequest) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{27}
}

func (m *CafeHTTPRequest) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeHTTPRequest.Unmarshal(m, b)
}
func (m *CafeHTTPRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeHTTPRequest.Marshal(b, m, deterministic)
}
func (m *CafeHTTPRequest) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeHTTPRequest.Merge(m, src)
}
func (m *CafeHTTPRequest) XXX_Size() int {
	return xxx_messageInfo_CafeHTTPRequest.Size(m)
}
func (m *CafeHTTPRequest) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeHTTPRequest.DiscardUnknown(m)
}

var xxx_messageInfo_CafeHTTPRequest proto.InternalMessageInfo

func (m *CafeHTTPRequest) GetType() CafeHTTPRequest_Type {
	if m != nil {
		return m.Type
	}
	return CafeHTTPRequest_PUT
}

func (m *CafeHTTPRequest) GetUrl() string {
	if m != nil {
		return m.Url
	}
	return ""
}

func (m *CafeHTTPRequest) GetHeaders() map[string]string {
	if m != nil {
		return m.Headers
	}
	return nil
}

func (m *CafeHTTPRequest) GetPath() string {
	if m != nil {
		return m.Path
	}
	return ""
}

type CafeMessage struct {
	Id                   string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Peer                 string               `protobuf:"bytes,2,opt,name=peer,proto3" json:"peer,omitempty"`
	Date                 *timestamp.Timestamp `protobuf:"bytes,3,opt,name=date,proto3" json:"date,omitempty"`
	Attempts             int32                `protobuf:"varint,4,opt,name=attempts,proto3" json:"attempts,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *CafeMessage) Reset()         { *m = CafeMessage{} }
func (m *CafeMessage) String() string { return proto.CompactTextString(m) }
func (*CafeMessage) ProtoMessage()    {}
func (*CafeMessage) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{28}
}

func (m *CafeMessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeMessage.Unmarshal(m, b)
}
func (m *CafeMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeMessage.Marshal(b, m, deterministic)
}
func (m *CafeMessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeMessage.Merge(m, src)
}
func (m *CafeMessage) XXX_Size() int {
	return xxx_messageInfo_CafeMessage.Size(m)
}
func (m *CafeMessage) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeMessage.DiscardUnknown(m)
}

var xxx_messageInfo_CafeMessage proto.InternalMessageInfo

func (m *CafeMessage) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *CafeMessage) GetPeer() string {
	if m != nil {
		return m.Peer
	}
	return ""
}

func (m *CafeMessage) GetDate() *timestamp.Timestamp {
	if m != nil {
		return m.Date
	}
	return nil
}

func (m *CafeMessage) GetAttempts() int32 {
	if m != nil {
		return m.Attempts
	}
	return 0
}

type CafeClientNonce struct {
	Value                string               `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"`
	Address              string               `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
	Date                 *timestamp.Timestamp `protobuf:"bytes,3,opt,name=date,proto3" json:"date,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *CafeClientNonce) Reset()         { *m = CafeClientNonce{} }
func (m *CafeClientNonce) String() string { return proto.CompactTextString(m) }
func (*CafeClientNonce) ProtoMessage()    {}
func (*CafeClientNonce) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{29}
}

func (m *CafeClientNonce) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeClientNonce.Unmarshal(m, b)
}
func (m *CafeClientNonce) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeClientNonce.Marshal(b, m, deterministic)
}
func (m *CafeClientNonce) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeClientNonce.Merge(m, src)
}
func (m *CafeClientNonce) XXX_Size() int {
	return xxx_messageInfo_CafeClientNonce.Size(m)
}
func (m *CafeClientNonce) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeClientNonce.DiscardUnknown(m)
}

var xxx_messageInfo_CafeClientNonce proto.InternalMessageInfo

func (m *CafeClientNonce) GetValue() string {
	if m != nil {
		return m.Value
	}
	return ""
}

func (m *CafeClientNonce) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *CafeClientNonce) GetDate() *timestamp.Timestamp {
	if m != nil {
		return m.Date
	}
	return nil
}

type CafeClient struct {
	Id                   string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Address              string               `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"`
	Created              *timestamp.Timestamp `protobuf:"bytes,3,opt,name=created,proto3" json:"created,omitempty"`
	Seen                 *timestamp.Timestamp `protobuf:"bytes,4,opt,name=seen,proto3" json:"seen,omitempty"`
	Token                string               `protobuf:"bytes,5,opt,name=token,proto3" json:"token,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *CafeClient) Reset()         { *m = CafeClient{} }
func (m *CafeClient) String() string { return proto.CompactTextString(m) }
func (*CafeClient) ProtoMessage()    {}
func (*CafeClient) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{30}
}

func (m *CafeClient) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeClient.Unmarshal(m, b)
}
func (m *CafeClient) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeClient.Marshal(b, m, deterministic)
}
func (m *CafeClient) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeClient.Merge(m, src)
}
func (m *CafeClient) XXX_Size() int {
	return xxx_messageInfo_CafeClient.Size(m)
}
func (m *CafeClient) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeClient.DiscardUnknown(m)
}

var xxx_messageInfo_CafeClient proto.InternalMessageInfo

func (m *CafeClient) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *CafeClient) GetAddress() string {
	if m != nil {
		return m.Address
	}
	return ""
}

func (m *CafeClient) GetCreated() *timestamp.Timestamp {
	if m != nil {
		return m.Created
	}
	return nil
}

func (m *CafeClient) GetSeen() *timestamp.Timestamp {
	if m != nil {
		return m.Seen
	}
	return nil
}

func (m *CafeClient) GetToken() string {
	if m != nil {
		return m.Token
	}
	return ""
}

type CafeClientList struct {
	Items                []*CafeClient `protobuf:"bytes,1,rep,name=items,proto3" json:"items,omitempty"`
	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
	XXX_unrecognized     []byte        `json:"-"`
	XXX_sizecache        int32         `json:"-"`
}

func (m *CafeClientList) Reset()         { *m = CafeClientList{} }
func (m *CafeClientList) String() string { return proto.CompactTextString(m) }
func (*CafeClientList) ProtoMessage()    {}
func (*CafeClientList) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{31}
}

func (m *CafeClientList) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeClientList.Unmarshal(m, b)
}
func (m *CafeClientList) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeClientList.Marshal(b, m, deterministic)
}
func (m *CafeClientList) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeClientList.Merge(m, src)
}
func (m *CafeClientList) XXX_Size() int {
	return xxx_messageInfo_CafeClientList.Size(m)
}
func (m *CafeClientList) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeClientList.DiscardUnknown(m)
}

var xxx_messageInfo_CafeClientList proto.InternalMessageInfo

func (m *CafeClientList) GetItems() []*CafeClient {
	if m != nil {
		return m.Items
	}
	return nil
}

type CafeToken struct {
	Id                   string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Value                []byte               `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	Date                 *timestamp.Timestamp `protobuf:"bytes,3,opt,name=date,proto3" json:"date,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *CafeToken) Reset()         { *m = CafeToken{} }
func (m *CafeToken) String() string { return proto.CompactTextString(m) }
func (*CafeToken) ProtoMessage()    {}
func (*CafeToken) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{32}
}

func (m *CafeToken) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeToken.Unmarshal(m, b)
}
func (m *CafeToken) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeToken.Marshal(b, m, deterministic)
}
func (m *CafeToken) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeToken.Merge(m, src)
}
func (m *CafeToken) XXX_Size() int {
	return xxx_messageInfo_CafeToken.Size(m)
}
func (m *CafeToken) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeToken.DiscardUnknown(m)
}

var xxx_messageInfo_CafeToken proto.InternalMessageInfo

func (m *CafeToken) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *CafeToken) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *CafeToken) GetDate() *timestamp.Timestamp {
	if m != nil {
		return m.Date
	}
	return nil
}

type CafeClientThread struct {
	Id                   string   `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Client               string   `protobuf:"bytes,2,opt,name=client,proto3" json:"client,omitempty"`
	Ciphertext           []byte   `protobuf:"bytes,3,opt,name=ciphertext,proto3" json:"ciphertext,omitempty"`
	XXX_NoUnkeyedLiteral struct{} `json:"-"`
	XXX_unrecognized     []byte   `json:"-"`
	XXX_sizecache        int32    `json:"-"`
}

func (m *CafeClientThread) Reset()         { *m = CafeClientThread{} }
func (m *CafeClientThread) String() string { return proto.CompactTextString(m) }
func (*CafeClientThread) ProtoMessage()    {}
func (*CafeClientThread) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{33}
}

func (m *CafeClientThread) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeClientThread.Unmarshal(m, b)
}
func (m *CafeClientThread) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeClientThread.Marshal(b, m, deterministic)
}
func (m *CafeClientThread) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeClientThread.Merge(m, src)
}
func (m *CafeClientThread) XXX_Size() int {
	return xxx_messageInfo_CafeClientThread.Size(m)
}
func (m *CafeClientThread) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeClientThread.DiscardUnknown(m)
}

var xxx_messageInfo_CafeClientThread proto.InternalMessageInfo

func (m *CafeClientThread) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *CafeClientThread) GetClient() string {
	if m != nil {
		return m.Client
	}
	return ""
}

func (m *CafeClientThread) GetCiphertext() []byte {
	if m != nil {
		return m.Ciphertext
	}
	return nil
}

type CafeClientMessage struct {
	Id                   string               `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"`
	Peer                 string               `protobuf:"bytes,2,opt,name=peer,proto3" json:"peer,omitempty"`
	Client               string               `protobuf:"bytes,3,opt,name=client,proto3" json:"client,omitempty"`
	Date                 *timestamp.Timestamp `protobuf:"bytes,4,opt,name=date,proto3" json:"date,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *CafeClientMessage) Reset()         { *m = CafeClientMessage{} }
func (m *CafeClientMessage) String() string { return proto.CompactTextString(m) }
func (*CafeClientMessage) ProtoMessage()    {}
func (*CafeClientMessage) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{34}
}

func (m *CafeClientMessage) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_CafeClientMessage.Unmarshal(m, b)
}
func (m *CafeClientMessage) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_CafeClientMessage.Marshal(b, m, deterministic)
}
func (m *CafeClientMessage) XXX_Merge(src proto.Message) {
	xxx_messageInfo_CafeClientMessage.Merge(m, src)
}
func (m *CafeClientMessage) XXX_Size() int {
	return xxx_messageInfo_CafeClientMessage.Size(m)
}
func (m *CafeClientMessage) XXX_DiscardUnknown() {
	xxx_messageInfo_CafeClientMessage.DiscardUnknown(m)
}

var xxx_messageInfo_CafeClientMessage proto.InternalMessageInfo

func (m *CafeClientMessage) GetId() string {
	if m != nil {
		return m.Id
	}
	return ""
}

func (m *CafeClientMessage) GetPeer() string {
	if m != nil {
		return m.Peer
	}
	return ""
}

func (m *CafeClientMessage) GetClient() string {
	if m != nil {
		return m.Client
	}
	return ""
}

func (m *CafeClientMessage) GetDate() *timestamp.Timestamp {
	if m != nil {
		return m.Date
	}
	return nil
}

// Bots KV Store //
type BotKV struct {
	Key                  string               `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
	Value                []byte               `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
	Created              *timestamp.Timestamp `protobuf:"bytes,3,opt,name=created,proto3" json:"created,omitempty"`
	Updated              *timestamp.Timestamp `protobuf:"bytes,4,opt,name=updated,proto3" json:"updated,omitempty"`
	XXX_NoUnkeyedLiteral struct{}             `json:"-"`
	XXX_unrecognized     []byte               `json:"-"`
	XXX_sizecache        int32                `json:"-"`
}

func (m *BotKV) Reset()         { *m = BotKV{} }
func (m *BotKV) String() string { return proto.CompactTextString(m) }
func (*BotKV) ProtoMessage()    {}
func (*BotKV) Descriptor() ([]byte, []int) {
	return fileDescriptor_4c16552f9fdb66d8, []int{35}
}

func (m *BotKV) XXX_Unmarshal(b []byte) error {
	return xxx_messageInfo_BotKV.Unmarshal(m, b)
}
func (m *BotKV) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
	return xxx_messageInfo_BotKV.Marshal(b, m, deterministic)
}
func (m *BotKV) XXX_Merge(src proto.Message) {
	xxx_messageInfo_BotKV.Merge(m, src)
}
func (m *BotKV) XXX_Size() int {
	return xxx_messageInfo_BotKV.Size(m)
}
func (m *BotKV) XXX_DiscardUnknown() {
	xxx_messageInfo_BotKV.DiscardUnknown(m)
}

var xxx_messageInfo_BotKV proto.InternalMessageInfo

func (m *BotKV) GetKey() string {
	if m != nil {
		return m.Key
	}
	return ""
}

func (m *BotKV) GetValue() []byte {
	if m != nil {
		return m.Value
	}
	return nil
}

func (m *BotKV) GetCreated() *timestamp.Timestamp {
	if m != nil {
		return m.Created
	}
	return nil
}

func (m *BotKV) GetUpdated() *timestamp.Timestamp {
	if m != nil {
		return m.Updated
	}
	return nil
}

func init() {
	proto.RegisterEnum("Thread_Type", Thread_Type_name, Thread_Type_value)
	proto.RegisterEnum("Thread_Sharing", Thread_Sharing_name, Thread_Sharing_value)
	proto.RegisterEnum("Thread_State", Thread_State_name, Thread_State_value)
	proto.RegisterEnum("Block_BlockType", Block_BlockType_name, Block_BlockType_value)
	proto.RegisterEnum("Block_BlockStatus", Block_BlockStatus_name, Block_BlockStatus_value)
	proto.RegisterEnum("Notification_Type", Notification_Type_name, Notification_Type_value)
	proto.RegisterEnum("CafeRequest_Type", CafeRequest_Type_name, CafeRequest_Type_value)
	proto.RegisterEnum("CafeRequest_Status", CafeRequest_Status_name, CafeRequest_Status_value)
	proto.RegisterEnum("CafeHTTPRequest_Type", CafeHTTPRequest_Type_name, CafeHTTPRequest_Type_value)
	proto.RegisterType((*SwarmPeerStream)(nil), "SwarmPeerStream")
	proto.RegisterType((*SwarmPeer)(nil), "SwarmPeer")
	proto.RegisterType((*SwarmPeerList)(nil), "SwarmPeerList")
	proto.RegisterType((*Peer)(nil), "Peer")
	proto.RegisterType((*PeerList)(nil), "PeerList")
	proto.RegisterType((*User)(nil), "User")
	proto.RegisterType((*Contact)(nil), "Contact")
	proto.RegisterType((*ContactList)(nil), "ContactList")
	proto.RegisterType((*Thread)(nil), "Thread")
	proto.RegisterType((*ThreadList)(nil), "ThreadList")
	proto.RegisterType((*ThreadPeer)(nil), "ThreadPeer")
	proto.RegisterType((*Block)(nil), "Block")
	proto.RegisterType((*BlockList)(nil), "BlockList")
	proto.RegisterType((*BlockMessage)(nil), "BlockMessage")
	proto.RegisterType((*Invite)(nil), "Invite")
	proto.RegisterType((*InviteList)(nil), "InviteList")
	proto.RegisterType((*FileIndex)(nil), "FileIndex")
	proto.RegisterType((*Node)(nil), "Node")
	proto.RegisterMapType((map[string]*Link)(nil), "Node.LinksEntry")
	proto.RegisterMapType((map[string]string)(nil), "Node.OptsEntry")
	proto.RegisterType((*Link)(nil), "Link")
	proto.RegisterMapType((map[string]string)(nil), "Link.OptsEntry")
	proto.RegisterType((*Notification)(nil), "Notification")
	proto.RegisterType((*NotificationList)(nil), "NotificationList")
	proto.RegisterType((*Cafe)(nil), "Cafe")
	proto.RegisterType((*CafeSession)(nil), "CafeSession")
	proto.RegisterType((*CafeSessionList)(nil), "CafeSessionList")
	proto.RegisterType((*CafeRequest)(nil), "CafeRequest")
	proto.RegisterType((*CafeRequestList)(nil), "CafeRequestList")
	proto.RegisterType((*CafeSyncGroupStatus)(nil), "CafeSyncGroupStatus")
	proto.RegisterType((*CafeHTTPRequest)(nil), "CafeHTTPRequest")
	proto.RegisterMapType((map[string]string)(nil), "CafeHTTPRequest.HeadersEntry")
	proto.RegisterType((*CafeMessage)(nil), "CafeMessage")
	proto.RegisterType((*CafeClientNonce)(nil), "CafeClientNonce")
	proto.RegisterType((*CafeClient)(nil), "CafeClient")
	proto.RegisterType((*CafeClientList)(nil), "CafeClientList")
	proto.RegisterType((*CafeToken)(nil), "CafeToken")
	proto.RegisterType((*CafeClientThread)(nil), "CafeClientThread")
	proto.RegisterType((*CafeClientMessage)(nil), "CafeClientMessage")
	proto.RegisterType((*BotKV)(nil), "BotKV")
}

func init() { proto.RegisterFile("model.proto", fileDescriptor_4c16552f9fdb66d8) }

var fileDescriptor_4c16552f9fdb66d8 = []byte{
	// 2481 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x58, 0x4f, 0x73, 0xdb, 0xc6,
	0x15, 0x37, 0x48, 0x80, 0x24, 0x1e, 0x29, 0x0b, 0x5e, 0x3b, 0x09, 0x22, 0xc7, 0x89, 0x83, 0x34,
	0x89, 0xf3, 0x8f, 0x49, 0x94, 0xb6, 0xce, 0xe4, 0xd2, 0xa1, 0x29, 0xd8, 0x66, 0x43, 0x91, 0x2a,
	0x48, 0xb9, 0x49, 0x2e, 0x1c, 0x08, 0x58, 0x89, 0x88, 0x48, 0x80, 0x01, 0x40, 0xc7, 0xca, 0x4c,
	0x27, 0xb7, 0x4e, 0x0f, 0xfd, 0x00, 0x9d, 0x69, 0xbf, 0x42, 0x2f, 0xfd, 0x0c, 0xfd, 0x1e, 0xbd,
	0xb6, 0xa7, 0x5e, 0x3a, 0x3d, 0x75, 0x3a, 0x9d, 0xf7, 0x76, 0x17, 0x04, 0x2d, 0x59, 0x91, 0x32,
	0xee, 0x85, 0xdc, 0xf7, 0x67, 0xf7, 0xed, 0xbe, 0xfd, 0xbd, 0x3f, 0x0b, 0x68, 0xce, 0x93, 0x90,
	0xcf, 0xda, 0x8b, 0x34, 0xc9, 0x93, 0xad, 0xd7, 0x8e, 0x92, 0xe4, 0x68, 0xc6, 0x3f, 0x24, 0xea,
	0x60, 0x79, 0xf8, 0x61, 0x1e, 0xcd, 0x79, 0x96, 0xfb, 0xf3, 0x85, 0x54, 0x78, 0xe5, 0x69, 0x85,
	0x2c, 0x4f, 0x97, 0x41, 0x2e, 0xa5, 0x1b, 0x73, 0x9e, 0x65, 0xfe, 0x11, 0x17, 0xa4, 0xf3, 0x01,
	0x6c, 0x8e, 0xbe, 0xf5, 0xd3, 0xf9, 0x1e, 0xe7, 0xe9, 0x28, 0x4f, 0xb9, 0x3f, 0x67, 0x5b, 0xd0,
	0x20, 0x59, 0x90, 0xcc, 0x6c, 0xed, 0xb6, 0x76, 0xc7, 0xf4, 0x0a, 0xda, 0xf9, 0xb3, 0x06, 0x66,
	0xa1, 0xcf, 0x18, 0xe8, 0x7e, 0x18, 0xa6, 0x52, 0x8b, 0xc6, 0xc8, 0x5b, 0x70, 0x9e, 0xda, 0x15,
	0xc1, 0xc3, 0x31, 0xb3, 0xa1, 0x3e, 0xf3, 0x73, 0x1e, 0x07, 0x27, 0x76, 0x95, 0xd8, 0x8a, 0x64,
	0x37, 0xc0, 0x98, 0x2f, 0x9f, 0xf0, 0xd4, 0xd6, 0x89, 0x2f, 0x08, 0xf6, 0x0a, 0x98, 0x61, 0x94,
	0xf2, 0x20, 0x8f, 0x92, 0xd8, 0x36, 0x6e, 0x6b, 0x77, 0x0c, 0x6f, 0xc5, 0x60, 0xef, 0x42, 0x3d,
	0xa3, 0x9d, 0x66, 0x76, 0xed, 0x76, 0xf5, 0x4e, 0x73, 0xdb, 0x6a, 0x3f, 0x75, 0x04, 0x4f, 0x29,
	0x38, 0x1f, 0xc3, 0x46, 0x21, 0xeb, 0x47, 0x59, 0xce, 0x6e, 0x83, 0x81, 0x5b, 0xca, 0x6c, 0x8d,
	0xa6, 0xc2, 0x6a, 0xaa, 0x27, 0x04, 0xce, 0x3f, 0x34, 0xd0, 0xe9, 0x74, 0x57, 0xa1, 0x12, 0x85,
	0xf2, 0x6c, 0x95, 0x28, 0xc4, 0x53, 0xe0, 0x09, 0x79, 0x96, 0xc9, 0xc3, 0x29, 0x12, 0xcf, 0x1c,
	0xfb, 0x73, 0x2e, 0x0f, 0x47, 0x63, 0xf6, 0x22, 0xd4, 0xfc, 0xc7, 0x7e, 0xee, 0xab, 0xa3, 0x49,
	0x8a, 0xbd, 0x06, 0xf5, 0x28, 0x3e, 0x48, 0x9e, 0xf0, 0xcc, 0x36, 0x68, 0x0b, 0x46, 0xbb, 0xeb,
	0x1f, 0x72, 0x4f, 0x71, 0xd9, 0x4f, 0xa1, 0x1e, 0xa4, 0xdc, 0xcf, 0x79, 0x68, 0xd7, 0x6e, 0x6b,
	0x77, 0x9a, 0xdb, 0x5b, 0x6d, 0x71, 0xa1, 0x6d, 0x75, 0xa1, 0xed, 0xb1, 0xba, 0x71, 0x4f, 0xa9,
	0xe2, 0xac, 0xe5, 0x22, 0xa4, 0x59, 0xf5, 0x1f, 0x9e, 0x25, 0x55, 0x9d, 0xb7, 0xa1, 0x51, 0x78,
	0xe6, 0x26, 0x18, 0x51, 0xce, 0xe7, 0xca, 0x33, 0x46, 0x5b, 0x38, 0x85, 0x78, 0x4e, 0x1f, 0xf4,
	0xfd, 0x4c, 0xdc, 0xa4, 0xf2, 0x81, 0x76, 0xb6, 0x0f, 0x2a, 0x67, 0xfa, 0xa0, 0x5a, 0xf6, 0x81,
	0xf3, 0x5b, 0x0d, 0xea, 0xdd, 0x24, 0xce, 0xfd, 0x20, 0x7f, 0x3e, 0x2b, 0xe2, 0xe6, 0xc5, 0xb5,
	0xea, 0x6b, 0x9b, 0x27, 0x1e, 0x9a, 0xc8, 0xa7, 0x29, 0xf7, 0x43, 0xe1, 0x72, 0xd3, 0x53, 0xa4,
	0xf3, 0x01, 0x34, 0xe5, 0x3e, 0xc8, 0x05, 0xaf, 0xae, 0xbb, 0xa0, 0xd1, 0x96, 0x42, 0xe5, 0x85,
	0xbf, 0xeb, 0x50, 0x1b, 0xd3, 0xd4, 0x53, 0xe0, 0xb0, 0xa0, 0x7a, 0xcc, 0x4f, 0xe4, 0x5e, 0x71,
	0x88, 0x1a, 0xd9, 0x31, 0x6d, 0xb3, 0xe5, 0x55, 0xb2, 0xe3, 0xe2, 0x38, 0xfa, 0xfa, 0x71, 0xb2,
	0x60, 0xca, 0xe7, 0x3e, 0xa1, 0xdc, 0xf4, 0x24, 0x85, 0x01, 0x10, 0xc5, 0x51, 0x1e, 0xf9, 0x79,
	0x92, 0x12, 0x0a, 0x4c, 0x6f, 0xc5, 0x60, 0xb7, 0x41, 0xcf, 0x4f, 0x16, 0x9c, 0x2e, 0xfa, 0xea,
	0x76, 0xab, 0x2d, 0xb6, 0xd4, 0x1e, 0x9f, 0x2c, 0xb8, 0x47, 0x12, 0xf6, 0x0e, 0xd4, 0xb3, 0xa9,
	0x9f, 0x46, 0xf1, 0x91, 0xdd, 0x20, 0xa5, 0x4d, 0xa5, 0x34, 0x12, 0x6c, 0x4f, 0xc9, 0xd1, 0xd4,
	0xb7, 0xd3, 0x28, 0xe7, 0xb3, 0x28, 0xcb, 0x6d, 0x93, 0xdc, 0xb3, 0x62, 0xb0, 0xb7, 0xc1, 0xc8,
	0x72, 0x3f, 0xe7, 0x36, 0xd0, 0x32, 0x1b, 0xc5, 0x32, 0xc8, 0xbc, 0x57, 0xb1, 0x35, 0x4f, 0xc8,
	0xf1, 0x74, 0x53, 0xee, 0x87, 0x76, 0x53, 0x9c, 0x0e, 0xc7, 0xec, 0x6d, 0x68, 0xe2, 0xff, 0xe4,
	0x60, 0x96, 0x04, 0xc7, 0x99, 0xcd, 0xc9, 0xa9, 0xb5, 0xf6, 0x3d, 0x24, 0x3d, 0x40, 0x11, 0x0d,
	0x33, 0xf6, 0x16, 0x34, 0xc5, 0xc1, 0x27, 0x71, 0x12, 0x72, 0xfb, 0x90, 0x00, 0x6c, 0xb4, 0x07,
	0x49, 0xc8, 0x3d, 0x10, 0x12, 0x1c, 0xb3, 0xd7, 0xa0, 0x49, 0x6b, 0x4d, 0x82, 0x64, 0x19, 0xe7,
	0xf6, 0x11, 0x65, 0x06, 0x20, 0x56, 0x17, 0x39, 0xec, 0x16, 0x00, 0x5e, 0xb9, 0x94, 0x4f, 0x45,
	0xe6, 0x40, 0x0e, 0x89, 0x9d, 0x4f, 0x41, 0x47, 0x27, 0xb1, 0x26, 0xd4, 0xf7, 0xbc, 0xde, 0xa3,
	0xce, 0xd8, 0xb5, 0xae, 0xb0, 0x0d, 0x30, 0x3d, 0xb7, 0xb3, 0x33, 0x19, 0x0e, 0xfa, 0x5f, 0x5a,
	0x1a, 0x03, 0xa8, 0xed, 0xed, 0xdf, 0xeb, 0xf7, 0xba, 0x56, 0x85, 0x35, 0x40, 0x1f, 0xee, 0xb9,
	0x03, 0xab, 0xea, 0xfc, 0x1c, 0xea, 0xd2, 0x73, 0xec, 0x2a, 0xc0, 0x60, 0x38, 0x9e, 0x8c, 0x1e,
	0x76, 0x3c, 0x77, 0xc7, 0xba, 0xc2, 0x36, 0xa1, 0xd9, 0x1b, 0x3c, 0xea, 0x8d, 0xdd, 0xd2, 0x0a,
	0x52, 0x58, 0x71, 0xee, 0x82, 0x41, 0xae, 0x62, 0x16, 0xb4, 0xfa, 0xc3, 0xce, 0x4e, 0x6f, 0xf0,
	0x60, 0x32, 0xee, 0xf4, 0xfa, 0xd6, 0x15, 0x54, 0x43, 0x8e, 0xbb, 0x63, 0x69, 0x65, 0xe9, 0x43,
	0xb7, 0x83, 0x13, 0xdf, 0x03, 0x10, 0xae, 0x26, 0x60, 0xde, 0x5a, 0x07, 0x66, 0x5d, 0x5e, 0x83,
	0xc2, 0xe5, 0x9e, 0x52, 0x3e, 0x33, 0x6f, 0xbd, 0x08, 0x35, 0x81, 0x77, 0x89, 0x4e, 0x49, 0x61,
	0x9e, 0xff, 0x96, 0xcf, 0x82, 0x64, 0xce, 0x43, 0x82, 0x69, 0xc3, 0x2b, 0x68, 0xe7, 0x4f, 0x3a,
	0x18, 0x74, 0x39, 0x17, 0x5e, 0x0d, 0x23, 0x73, 0x99, 0x4f, 0x93, 0x55, 0x64, 0x12, 0xc5, 0x7e,
	0x22, 0xc1, 0xaa, 0x13, 0x80, 0x2c, 0x71, 0xfb, 0xe2, 0xb7, 0x04, 0xd8, 0x36, 0xe8, 0x98, 0x91,
	0x28, 0x0c, 0xce, 0xcf, 0x5d, 0xa4, 0x87, 0x21, 0xbd, 0xf0, 0x53, 0x1e, 0xe7, 0xa2, 0x06, 0x98,
	0x9e, 0x22, 0x69, 0x7f, 0x7e, 0x7a, 0xc4, 0x73, 0x0a, 0x0f, 0xdc, 0x1f, 0x51, 0x08, 0xd0, 0xd0,
	0xcf, 0x7d, 0xdb, 0x14, 0x00, 0xc5, 0x31, 0xf2, 0x0e, 0x92, 0xf0, 0x84, 0x62, 0xc4, 0xf4, 0x68,
	0xcc, 0xde, 0x85, 0x1a, 0x22, 0x7a, 0x99, 0x49, 0xc8, 0xb3, 0xf2, 0x8e, 0x47, 0x24, 0xf1, 0xa4,
	0x06, 0x7a, 0xd0, 0xcf, 0x73, 0x3e, 0x5f, 0xe4, 0x19, 0x01, 0xdf, 0xf0, 0x0a, 0x9a, 0xbd, 0x0c,
	0xfa, 0x32, 0xe3, 0xa9, 0xcd, 0x25, 0x98, 0x31, 0x7d, 0x7a, 0xc4, 0x72, 0x7e, 0xaf, 0x81, 0x59,
	0x38, 0x80, 0x6d, 0x80, 0xb1, 0xeb, 0x7a, 0x0f, 0x5c, 0xeb, 0xca, 0x56, 0xa5, 0x41, 0xe8, 0xe9,
	0x3d, 0x18, 0x0c, 0x3d, 0xd7, 0xd2, 0x10, 0x7f, 0xf7, 0xfb, 0x9d, 0x07, 0x02, 0x89, 0xbf, 0x1c,
	0xf6, 0x06, 0x56, 0x95, 0xb5, 0xa0, 0xd1, 0x19, 0x0c, 0x86, 0xfb, 0x83, 0xae, 0x6b, 0xe9, 0xcc,
	0x04, 0xa3, 0xef, 0x76, 0x1e, 0xb9, 0x96, 0x81, 0x2a, 0x63, 0xf7, 0x8b, 0xb1, 0x55, 0x43, 0xe6,
	0xfd, 0x5e, 0xdf, 0x1d, 0x59, 0x75, 0xb6, 0x09, 0xf5, 0xee, 0x70, 0x77, 0xd7, 0x1d, 0x8c, 0xad,
	0x06, 0x2d, 0xdf, 0x00, 0xbd, 0xdf, 0xfb, 0xdc, 0xb5, 0x4c, 0x56, 0x87, 0x6a, 0x67, 0x67, 0xc7,
	0xda, 0x76, 0x3e, 0x86, 0x66, 0xe9, 0x70, 0x38, 0x1b, 0xe3, 0xe1, 0x4b, 0x01, 0xd1, 0x5f, 0xed,
	0xbb, 0xfb, 0x04, 0x51, 0x8c, 0x19, 0x77, 0x80, 0x10, 0xb5, 0x2a, 0xce, 0x3b, 0xf2, 0x00, 0x04,
	0xce, 0x57, 0xd6, 0xc1, 0xa9, 0x02, 0x5c, 0x62, 0xf3, 0x7b, 0x68, 0x11, 0xbd, 0x2b, 0xda, 0x8e,
	0x53, 0x78, 0x3a, 0xab, 0x5f, 0xb8, 0x09, 0x55, 0x1e, 0x3f, 0x26, 0x20, 0x35, 0xb7, 0xcd, 0xb6,
	0x1b, 0x3f, 0xe6, 0xb3, 0x64, 0xc1, 0x3d, 0xe4, 0x16, 0x50, 0xd1, 0x2f, 0x06, 0x15, 0x6c, 0x59,
	0x6a, 0xbd, 0xf8, 0x71, 0x94, 0x9f, 0xb6, 0x7d, 0x03, 0x0c, 0x4a, 0x1e, 0x64, 0xbc, 0xe5, 0x09,
	0xe2, 0xcc, 0x6a, 0x4e, 0x55, 0x1b, 0xd7, 0x48, 0xa5, 0x5d, 0x59, 0x61, 0x14, 0xf7, 0xf9, 0x01,
	0x18, 0x23, 0x5f, 0x6c, 0xf7, 0xec, 0xc8, 0x17, 0x32, 0xe5, 0xdd, 0xbf, 0x56, 0xc0, 0xbc, 0x1f,
	0xcd, 0x78, 0x2f, 0x0e, 0xf9, 0x13, 0xdc, 0xf9, 0x3c, 0x9a, 0xa9, 0xae, 0x8d, 0xc6, 0x88, 0xd1,
	0x60, 0xca, 0x83, 0xe3, 0x6c, 0x39, 0x97, 0x3e, 0x2e, 0x68, 0x2a, 0x3f, 0xc9, 0x32, 0x0d, 0xd4,
	0x59, 0x25, 0x85, 0xeb, 0x24, 0x88, 0x69, 0x59, 0xaa, 0x70, 0x4c, 0x09, 0xde, 0xcf, 0xa6, 0xb2,
	0x50, 0xd1, 0x58, 0x15, 0xbd, 0xda, 0xaa, 0xe8, 0x61, 0x3f, 0xc7, 0xc3, 0xc8, 0x97, 0xc1, 0x27,
	0x88, 0xc2, 0xa3, 0x8d, 0x92, 0x47, 0x19, 0xe8, 0x59, 0xf4, 0x1d, 0xa7, 0x78, 0xac, 0x7a, 0x34,
	0x66, 0x1f, 0x81, 0xe1, 0x87, 0x21, 0x0f, 0x29, 0xf4, 0xce, 0xf7, 0xa2, 0x50, 0x64, 0xef, 0x81,
	0x3e, 0xe7, 0xb9, 0x4f, 0xd1, 0xd7, 0xdc, 0x7e, 0xe9, 0xd4, 0x84, 0x11, 0xb5, 0xbe, 0x1e, 0x29,
	0x51, 0x1f, 0x40, 0xc9, 0x20, 0xb3, 0x5b, 0xb2, 0x0f, 0x10, 0xa4, 0xf3, 0xb7, 0x0a, 0xe8, 0x54,
	0x61, 0xd4, 0x4e, 0xb5, 0xd2, 0x4e, 0x2d, 0xa8, 0x2e, 0xa2, 0x98, 0x9c, 0xd7, 0xf0, 0x70, 0x88,
	0x35, 0x73, 0x31, 0xf3, 0xa3, 0x38, 0xe7, 0x4f, 0x72, 0x99, 0x3a, 0x57, 0x8c, 0xe2, 0x16, 0xf4,
	0xd2, 0x2d, 0xbc, 0x21, 0x3d, 0x2a, 0x5a, 0xbe, 0x4d, 0x2a, 0x6d, 0xed, 0xe1, 0x22, 0xcf, 0xdc,
	0x38, 0x4f, 0x4f, 0xa4, 0x8b, 0x3f, 0x85, 0xe6, 0xd7, 0x59, 0x12, 0x4f, 0x64, 0x4b, 0x50, 0x3b,
	0xff, 0x4c, 0x80, 0xba, 0x23, 0xd1, 0x2f, 0xbc, 0x05, 0xc6, 0x2c, 0x8a, 0x8f, 0x33, 0xbb, 0x21,
	0x1b, 0x62, 0x5a, 0xbf, 0x8f, 0x2c, 0x61, 0x40, 0x88, 0xb7, 0xee, 0x82, 0x59, 0x18, 0x55, 0xb7,
	0xa7, 0xad, 0xdd, 0xde, 0x63, 0x7f, 0xb6, 0x54, 0x2d, 0x97, 0x20, 0x3e, 0xab, 0x7c, 0xaa, 0x6d,
	0xfd, 0x02, 0x60, 0xb5, 0xda, 0x19, 0x33, 0x6f, 0x96, 0x67, 0x62, 0x74, 0xa0, 0x76, 0x69, 0x01,
	0xe7, 0x5f, 0x1a, 0xe8, 0xc8, 0xc3, 0xb9, 0xcb, 0x4c, 0x39, 0x18, 0x87, 0xff, 0x17, 0xff, 0xa2,
	0xa9, 0xe7, 0xe7, 0xdf, 0x1f, 0xed, 0x37, 0xe7, 0x9f, 0x55, 0x68, 0x0d, 0x92, 0x3c, 0x3a, 0x8c,
	0x02, 0x9f, 0x1e, 0x2f, 0x4f, 0xa7, 0x20, 0x95, 0x37, 0x2a, 0x17, 0xcc, 0x1b, 0x37, 0xc0, 0xf0,
	0x83, 0xbc, 0xa8, 0xb2, 0x82, 0x40, 0x64, 0x67, 0xcb, 0x83, 0xaf, 0x79, 0x90, 0x4b, 0xaf, 0x28,
	0x92, 0xbd, 0x0e, 0x2d, 0x39, 0x9c, 0x84, 0x3c, 0x0b, 0x64, 0xf8, 0x36, 0x25, 0x6f, 0x87, 0x67,
	0xc1, 0x2a, 0x0b, 0x8a, 0x38, 0x96, 0x59, 0xf0, 0x59, 0x75, 0xf4, 0x2d, 0x59, 0xcf, 0x1b, 0xb2,
	0x3a, 0x96, 0x4f, 0x57, 0x6e, 0x41, 0x55, 0x6d, 0x35, 0x4b, 0xb5, 0x95, 0x81, 0x4e, 0x9d, 0x03,
	0xd0, 0x95, 0xd2, 0xf8, 0xbc, 0x3a, 0xf9, 0x17, 0x4d, 0xf6, 0x6b, 0xd7, 0x61, 0x53, 0xb6, 0x58,
	0x9e, 0xdb, 0x75, 0x7b, 0x8f, 0xa8, 0xef, 0x7a, 0x09, 0xae, 0x77, 0xba, 0xdd, 0xe1, 0xfe, 0x60,
	0x3c, 0xd9, 0x73, 0x5d, 0x6f, 0x82, 0xf5, 0x91, 0x2a, 0xd5, 0x0b, 0x70, 0x6d, 0x4d, 0xd0, 0x77,
	0xef, 0x8f, 0xad, 0x06, 0xf6, 0x69, 0x65, 0xbd, 0x0a, 0x36, 0x7e, 0x2b, 0x79, 0x95, 0x5d, 0x83,
	0x8d, 0x5d, 0x77, 0x34, 0xea, 0x3c, 0x70, 0x27, 0x9d, 0x1d, 0x6c, 0xcb, 0x74, 0x9c, 0x42, 0x85,
	0x54, 0x32, 0x0c, 0xd4, 0x91, 0xe5, 0x54, 0xb2, 0x6a, 0xd8, 0x0e, 0x62, 0x41, 0x95, 0x74, 0xdd,
	0xb9, 0x0b, 0x56, 0xd9, 0x25, 0x94, 0xc4, 0xdf, 0x58, 0x4f, 0xe2, 0x1b, 0x6b, 0x4e, 0x53, 0xa9,
	0xfc, 0x77, 0x1a, 0xe8, 0xf8, 0x12, 0x2c, 0x2a, 0xa2, 0xb6, 0xfe, 0x82, 0x7e, 0xc6, 0xdb, 0xd3,
	0x82, 0xaa, 0xbf, 0x88, 0x24, 0x1c, 0x70, 0xb8, 0xf6, 0x7e, 0xd7, 0xd7, 0xdf, 0xef, 0x94, 0xdf,
	0xb0, 0xc5, 0x96, 0x59, 0x1c, 0xc7, 0x14, 0x91, 0xe9, 0x4c, 0x65, 0xf1, 0x65, 0x3a, 0x73, 0xfe,
	0xad, 0x41, 0x13, 0xb7, 0x32, 0xe2, 0x59, 0x76, 0x16, 0x68, 0xb1, 0xd7, 0x0b, 0x82, 0xd5, 0x66,
	0x24, 0xc5, 0xde, 0x87, 0x2a, 0x7f, 0xb2, 0x90, 0x75, 0xfb, 0x3c, 0x2c, 0xa3, 0x1a, 0x9e, 0x29,
	0xe5, 0x87, 0x29, 0xcf, 0xa6, 0x0a, 0xb4, 0x92, 0xc4, 0xa0, 0x48, 0x71, 0xa1, 0x0b, 0x14, 0xd3,
	0x54, 0xae, 0xa4, 0xe0, 0x5f, 0x5b, 0x87, 0x3f, 0x2b, 0x3d, 0x95, 0x4c, 0x89, 0xcc, 0x97, 0x41,
	0x0f, 0xfc, 0x43, 0x81, 0xe0, 0xe2, 0xf9, 0x4d, 0x2c, 0xe7, 0x67, 0xb0, 0x59, 0x3a, 0x37, 0xdd,
	0x9d, 0xb3, 0x7e, 0x77, 0xad, 0x76, 0x49, 0x41, 0x5d, 0xdd, 0x1f, 0x74, 0xe1, 0x2f, 0x8f, 0x7f,
	0xb3, 0xe4, 0x59, 0x7e, 0xa1, 0x1e, 0x67, 0x15, 0x5f, 0xd5, 0xb5, 0xf8, 0x52, 0xbb, 0xd3, 0x4f,
	0xed, 0x0e, 0x03, 0xf5, 0x28, 0x4d, 0x96, 0x0b, 0x59, 0x47, 0x05, 0x81, 0x6f, 0x9e, 0xec, 0x24,
	0x0e, 0x26, 0x42, 0x04, 0xe2, 0xb1, 0x88, 0x9c, 0x07, 0x24, 0x7e, 0x53, 0x7a, 0xc0, 0xa0, 0x78,
	0xbd, 0xd6, 0x2e, 0xed, 0xb3, 0x7d, 0x46, 0x03, 0x5e, 0xbb, 0x60, 0x1e, 0x52, 0xe5, 0xbb, 0x5e,
	0x2a, 0xdf, 0xef, 0x15, 0xad, 0xb3, 0x49, 0xc6, 0xae, 0xaf, 0x19, 0xbb, 0x44, 0xef, 0x7c, 0x0b,
	0x80, 0x4e, 0x33, 0x21, 0x13, 0x2d, 0x32, 0x61, 0x12, 0x67, 0x24, 0xec, 0x5c, 0x13, 0xe2, 0x3c,
	0xf5, 0xe3, 0xec, 0x90, 0xa7, 0x29, 0x0f, 0xed, 0x0d, 0xd2, 0xb2, 0x48, 0x30, 0x5e, 0xf1, 0x9d,
	0xa1, 0xcc, 0x21, 0x26, 0x18, 0xa3, 0x31, 0xb6, 0xd5, 0x57, 0xb0, 0x95, 0xdd, 0x1f, 0x08, 0xa2,
	0x8a, 0x4f, 0x2f, 0x1a, 0x4e, 0xc6, 0x0f, 0xb1, 0xed, 0xb5, 0x34, 0xc6, 0xe0, 0xaa, 0x14, 0x2b,
	0x1e, 0xf5, 0xd9, 0xbd, 0xc1, 0xbd, 0xe1, 0x17, 0x56, 0xc5, 0x79, 0x1f, 0x6a, 0xb2, 0x53, 0xae,
	0x43, 0x75, 0xe0, 0xfe, 0x5a, 0x2c, 0xa8, 0x7a, 0x63, 0x0d, 0x1b, 0xf4, 0xee, 0x70, 0x77, 0xaf,
	0xef, 0x8e, 0x5d, 0xab, 0xa2, 0x10, 0x25, 0x9d, 0xf0, 0x6c, 0x44, 0x49, 0x05, 0x85, 0xa8, 0xff,
	0x54, 0xe0, 0x3a, 0x01, 0x4d, 0xdd, 0xa3, 0x34, 0xf9, 0x34, 0xb2, 0x6e, 0x82, 0x19, 0x2f, 0xe7,
	0x93, 0x3c, 0xc9, 0xfd, 0x19, 0xc1, 0xcb, 0xf0, 0x1a, 0xf1, 0x72, 0x3e, 0x46, 0x1a, 0x9f, 0xcb,
	0x28, 0x5c, 0xf0, 0x38, 0x8c, 0xe2, 0x23, 0xc2, 0x99, 0xe1, 0x41, 0xbc, 0x9c, 0xef, 0x09, 0x0e,
	0x16, 0x07, 0x54, 0x08, 0x92, 0xf9, 0x62, 0xc6, 0x65, 0x4b, 0x6d, 0x78, 0x38, 0xa9, 0x2b, 0x59,
	0x84, 0xae, 0xe8, 0x3b, 0x2e, 0x2d, 0x18, 0xe2, 0x2a, 0x90, 0x23, 0x4c, 0x60, 0x79, 0x41, 0xb1,
	0xb2, 0x51, 0x23, 0x85, 0x26, 0xf2, 0x94, 0x91, 0x37, 0x60, 0x83, 0x54, 0x0a, 0x2b, 0x02, 0x32,
	0x34, 0xaf, 0x30, 0xf3, 0xae, 0xbc, 0xd2, 0x6c, 0x52, 0xb2, 0xd6, 0x20, 0xc5, 0x4d, 0x21, 0x18,
	0x15, 0x36, 0x3f, 0x82, 0x1b, 0x65, 0xdd, 0x62, 0x5d, 0xd1, 0x49, 0xb2, 0x95, 0x7a, 0xb1, 0xfa,
	0x0d, 0x30, 0x78, 0x9a, 0x26, 0xa9, 0xbd, 0x2d, 0x02, 0x87, 0x08, 0xf6, 0x32, 0x34, 0x68, 0x30,
	0x89, 0x42, 0xfb, 0x13, 0x91, 0x36, 0x88, 0xee, 0x85, 0xce, 0x7f, 0x35, 0x71, 0x6d, 0x0f, 0xc7,
	0xe3, 0x3d, 0x15, 0xd4, 0xef, 0xc8, 0x40, 0xd2, 0x08, 0xdb, 0x2f, 0xb4, 0x9f, 0x92, 0x97, 0x83,
	0x49, 0x66, 0xd4, 0x4a, 0x91, 0x51, 0xd9, 0x5d, 0xa8, 0x4f, 0xb9, 0x1f, 0xf2, 0x34, 0xb3, 0xab,
	0x74, 0xeb, 0xb7, 0x4e, 0xcd, 0x7f, 0x28, 0xe4, 0xa2, 0x61, 0x51, 0xda, 0x94, 0x3a, 0xfc, 0x5c,
	0x65, 0x48, 0x1a, 0x6f, 0x7d, 0x06, 0xad, 0xb2, 0xf2, 0xa5, 0x1a, 0x92, 0x37, 0x65, 0x38, 0xd4,
	0xa1, 0xba, 0xb7, 0x3f, 0xb6, 0xae, 0xe0, 0x83, 0x70, 0x6f, 0x38, 0x1a, 0x8b, 0xef, 0x16, 0x3b,
	0xae, 0x84, 0xed, 0x6f, 0x44, 0x42, 0xbb, 0xcc, 0xa3, 0x4d, 0x65, 0x90, 0xea, 0x05, 0x33, 0x48,
	0x39, 0x01, 0xe8, 0xeb, 0x09, 0xc0, 0xf9, 0x46, 0xb8, 0xbf, 0x3b, 0x8b, 0x78, 0x9c, 0x0f, 0x92,
	0x38, 0xe0, 0xab, 0x23, 0x69, 0xa5, 0x23, 0x9d, 0x53, 0x17, 0x2f, 0xb9, 0x1d, 0x6c, 0x36, 0x60,
	0x65, 0xf3, 0x12, 0x1f, 0x7f, 0x4b, 0xdf, 0x6b, 0xab, 0x17, 0xff, 0x5e, 0xdb, 0x06, 0x3d, 0xe3,
	0x3c, 0xbe, 0xc8, 0x2b, 0x16, 0xf5, 0xf0, 0xf8, 0x79, 0x72, 0xcc, 0x63, 0x59, 0xb9, 0x05, 0xe1,
	0x7c, 0x02, 0x57, 0x57, 0x7b, 0xa6, 0xe4, 0xf2, 0xfa, 0x7a, 0x72, 0x69, 0xb6, 0x57, 0x72, 0x95,
	0x5b, 0x7c, 0x30, 0x91, 0x39, 0xc6, 0x15, 0xce, 0x7a, 0x12, 0xaf, 0x90, 0xd3, 0x52, 0x6e, 0xbe,
	0xac, 0x33, 0xbf, 0x02, 0x6b, 0x65, 0xf7, 0x19, 0x5f, 0x4c, 0x5f, 0x84, 0x5a, 0x40, 0x72, 0xd5,
	0x44, 0x08, 0x8a, 0xbd, 0x0a, 0x10, 0x44, 0x8b, 0x29, 0x4f, 0x8b, 0xee, 0xbf, 0xe5, 0x95, 0x38,
	0xce, 0xf7, 0x70, 0x6d, 0xb5, 0xf6, 0x65, 0x00, 0xba, 0x32, 0x58, 0x5d, 0x33, 0x78, 0xd9, 0x0f,
	0x0a, 0x7f, 0xd4, 0xc0, 0xb8, 0x97, 0xe4, 0x9f, 0x3f, 0xfa, 0xa1, 0xc0, 0x2b, 0xdc, 0xf7, 0xe3,
	0x20, 0x52, 0xfa, 0xa4, 0xaf, 0x5f, 0xf8, 0x93, 0xfe, 0xbd, 0x57, 0x61, 0x23, 0x4a, 0xda, 0xe8,
	0xa9, 0x08, 0x35, 0x0f, 0xbe, 0xda, 0x38, 0x4a, 0x3e, 0x90, 0xe4, 0x87, 0x8b, 0x83, 0x83, 0x1a,
	0x4d, 0xfe, 0xe4, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0xef, 0xda, 0x34, 0x7f, 0x54, 0x1a, 0x00,
	0x00,
}
