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

package storage_service_go_proto

import (
	fmt "fmt"
	proto "github.com/golang/protobuf/proto"
	_ "kythe.io/kythe/proto/storage_go_proto"
	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

func init() { proto.RegisterFile("kythe/proto/storage_service.proto", fileDescriptor_67be6a87f67c26cd) }

var fileDescriptor_67be6a87f67c26cd = []byte{
	// 241 bytes of a gzipped FileDescriptorProto
	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0x52, 0xcc, 0xae, 0x2c, 0xc9,
	0x48, 0xd5, 0x2f, 0x28, 0xca, 0x2f, 0xc9, 0xd7, 0x2f, 0x2e, 0xc9, 0x2f, 0x4a, 0x4c, 0x4f, 0x8d,
	0x2f, 0x4e, 0x2d, 0x2a, 0xcb, 0x4c, 0x4e, 0xd5, 0x03, 0x8b, 0x0a, 0x71, 0x83, 0x95, 0x40, 0x38,
	0x52, 0x92, 0x58, 0xd4, 0x43, 0xa4, 0x8c, 0xf6, 0x33, 0x72, 0x71, 0xb9, 0x17, 0x25, 0x16, 0x64,
	0x04, 0x97, 0xe4, 0x17, 0xa5, 0x0a, 0x59, 0x70, 0xb1, 0x04, 0xa5, 0x26, 0xa6, 0x08, 0x49, 0xe8,
	0x21, 0xe9, 0xd7, 0x03, 0x09, 0x05, 0xa5, 0x16, 0x96, 0xa6, 0x16, 0x97, 0x48, 0x09, 0xa1, 0xc8,
	0xb8, 0xe6, 0x95, 0x14, 0x55, 0x2a, 0x31, 0x18, 0x30, 0x82, 0x74, 0x06, 0x27, 0x27, 0xe6, 0xa1,
	0xe9, 0x04, 0x09, 0x11, 0xd2, 0x69, 0xcb, 0xc5, 0x1a, 0x5e, 0x94, 0x59, 0x92, 0x2a, 0x24, 0x89,
	0xa2, 0x00, 0x2c, 0x06, 0xd3, 0x2b, 0x8e, 0x4d, 0xaa, 0x20, 0xa7, 0x52, 0x89, 0xc1, 0xa8, 0x8f,
	0x91, 0x4b, 0x30, 0x38, 0x23, 0xb1, 0x28, 0x25, 0x35, 0x05, 0xc9, 0x23, 0xb6, 0x5c, 0xac, 0xce,
	0xf9, 0xa5, 0x79, 0x25, 0x68, 0x86, 0x82, 0xc5, 0xb0, 0x1b, 0x0a, 0x95, 0x02, 0x1b, 0x2a, 0x64,
	0xc5, 0xc5, 0x0a, 0x36, 0x13, 0x4d, 0x3b, 0x58, 0x8c, 0x80, 0x7f, 0x9c, 0xac, 0xb9, 0xe4, 0x93,
	0xf3, 0x73, 0xf5, 0xd2, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x52, 0x52, 0xcb, 0x4a, 0xf2, 0xf3,
	0x73, 0x8a, 0x91, 0x15, 0x47, 0x49, 0xa0, 0x45, 0x5a, 0x7c, 0x7a, 0x7e, 0x3c, 0x58, 0x26, 0x89,
	0x0d, 0x4c, 0x19, 0x03, 0x02, 0x00, 0x00, 0xff, 0xff, 0x4f, 0xed, 0xd0, 0xd0, 0xe3, 0x01, 0x00,
	0x00,
}
