// Copyright 2020 Google LLC // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // Code generated by protoc-gen-go. DO NOT EDIT. // versions: // protoc-gen-go v1.28.1 // protoc v3.6.1 // source: demo.proto package oteldemo import ( timestamp "github.com/golang/protobuf/ptypes/timestamp" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" reflect "reflect" sync "sync" ) const ( // Verify that this generated code is sufficiently up-to-date. _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) // Verify that runtime/protoimpl is sufficiently up-to-date. _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) type CartItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProductId string `protobuf:"bytes,1,opt,name=product_id,json=productId,proto3" json:"product_id,omitempty"` Quantity int32 `protobuf:"varint,2,opt,name=quantity,proto3" json:"quantity,omitempty"` } func (x *CartItem) Reset() { *x = CartItem{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[0] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CartItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*CartItem) ProtoMessage() {} func (x *CartItem) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[0] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CartItem.ProtoReflect.Descriptor instead. func (*CartItem) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{0} } func (x *CartItem) GetProductId() string { if x != nil { return x.ProductId } return "" } func (x *CartItem) GetQuantity() int32 { if x != nil { return x.Quantity } return 0 } type AddItemRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Item *CartItem `protobuf:"bytes,2,opt,name=item,proto3" json:"item,omitempty"` } func (x *AddItemRequest) Reset() { *x = AddItemRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AddItemRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AddItemRequest) ProtoMessage() {} func (x *AddItemRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AddItemRequest.ProtoReflect.Descriptor instead. func (*AddItemRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{1} } func (x *AddItemRequest) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *AddItemRequest) GetItem() *CartItem { if x != nil { return x.Item } return nil } type EmptyCartRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` } func (x *EmptyCartRequest) Reset() { *x = EmptyCartRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *EmptyCartRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*EmptyCartRequest) ProtoMessage() {} func (x *EmptyCartRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use EmptyCartRequest.ProtoReflect.Descriptor instead. func (*EmptyCartRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{2} } func (x *EmptyCartRequest) GetUserId() string { if x != nil { return x.UserId } return "" } type GetCartRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` } func (x *GetCartRequest) Reset() { *x = GetCartRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetCartRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetCartRequest) ProtoMessage() {} func (x *GetCartRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetCartRequest.ProtoReflect.Descriptor instead. func (*GetCartRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{3} } func (x *GetCartRequest) GetUserId() string { if x != nil { return x.UserId } return "" } type Cart struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` Items []*CartItem `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` } func (x *Cart) Reset() { *x = Cart{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Cart) String() string { return protoimpl.X.MessageStringOf(x) } func (*Cart) ProtoMessage() {} func (x *Cart) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Cart.ProtoReflect.Descriptor instead. func (*Cart) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{4} } func (x *Cart) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *Cart) GetItems() []*CartItem { if x != nil { return x.Items } return nil } type Empty struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *Empty) Reset() { *x = Empty{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Empty) String() string { return protoimpl.X.MessageStringOf(x) } func (*Empty) ProtoMessage() {} func (x *Empty) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Empty.ProtoReflect.Descriptor instead. func (*Empty) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{5} } type ListRecommendationsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` ProductIds []string `protobuf:"bytes,2,rep,name=product_ids,json=productIds,proto3" json:"product_ids,omitempty"` } func (x *ListRecommendationsRequest) Reset() { *x = ListRecommendationsRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListRecommendationsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRecommendationsRequest) ProtoMessage() {} func (x *ListRecommendationsRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListRecommendationsRequest.ProtoReflect.Descriptor instead. func (*ListRecommendationsRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{6} } func (x *ListRecommendationsRequest) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *ListRecommendationsRequest) GetProductIds() []string { if x != nil { return x.ProductIds } return nil } type ListRecommendationsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields ProductIds []string `protobuf:"bytes,1,rep,name=product_ids,json=productIds,proto3" json:"product_ids,omitempty"` } func (x *ListRecommendationsResponse) Reset() { *x = ListRecommendationsResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListRecommendationsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListRecommendationsResponse) ProtoMessage() {} func (x *ListRecommendationsResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListRecommendationsResponse.ProtoReflect.Descriptor instead. func (*ListRecommendationsResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{7} } func (x *ListRecommendationsResponse) GetProductIds() []string { if x != nil { return x.ProductIds } return nil } type Product struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"` Picture string `protobuf:"bytes,4,opt,name=picture,proto3" json:"picture,omitempty"` PriceUsd *Money `protobuf:"bytes,5,opt,name=price_usd,json=priceUsd,proto3" json:"price_usd,omitempty"` // Categories such as "clothing" or "kitchen" that can be used to look up // other related products. Categories []string `protobuf:"bytes,6,rep,name=categories,proto3" json:"categories,omitempty"` } func (x *Product) Reset() { *x = Product{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Product) String() string { return protoimpl.X.MessageStringOf(x) } func (*Product) ProtoMessage() {} func (x *Product) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Product.ProtoReflect.Descriptor instead. func (*Product) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{8} } func (x *Product) GetId() string { if x != nil { return x.Id } return "" } func (x *Product) GetName() string { if x != nil { return x.Name } return "" } func (x *Product) GetDescription() string { if x != nil { return x.Description } return "" } func (x *Product) GetPicture() string { if x != nil { return x.Picture } return "" } func (x *Product) GetPriceUsd() *Money { if x != nil { return x.PriceUsd } return nil } func (x *Product) GetCategories() []string { if x != nil { return x.Categories } return nil } type ListProductsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Products []*Product `protobuf:"bytes,1,rep,name=products,proto3" json:"products,omitempty"` } func (x *ListProductsResponse) Reset() { *x = ListProductsResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListProductsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListProductsResponse) ProtoMessage() {} func (x *ListProductsResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListProductsResponse.ProtoReflect.Descriptor instead. func (*ListProductsResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{9} } func (x *ListProductsResponse) GetProducts() []*Product { if x != nil { return x.Products } return nil } type GetProductRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } func (x *GetProductRequest) Reset() { *x = GetProductRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetProductRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetProductRequest) ProtoMessage() {} func (x *GetProductRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetProductRequest.ProtoReflect.Descriptor instead. func (*GetProductRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{10} } func (x *GetProductRequest) GetId() string { if x != nil { return x.Id } return "" } type SearchProductsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"` } func (x *SearchProductsRequest) Reset() { *x = SearchProductsRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchProductsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchProductsRequest) ProtoMessage() {} func (x *SearchProductsRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchProductsRequest.ProtoReflect.Descriptor instead. func (*SearchProductsRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{11} } func (x *SearchProductsRequest) GetQuery() string { if x != nil { return x.Query } return "" } type SearchProductsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Results []*Product `protobuf:"bytes,1,rep,name=results,proto3" json:"results,omitempty"` } func (x *SearchProductsResponse) Reset() { *x = SearchProductsResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SearchProductsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*SearchProductsResponse) ProtoMessage() {} func (x *SearchProductsResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SearchProductsResponse.ProtoReflect.Descriptor instead. func (*SearchProductsResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{12} } func (x *SearchProductsResponse) GetResults() []*Product { if x != nil { return x.Results } return nil } type GetQuoteRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Address *Address `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Items []*CartItem `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` } func (x *GetQuoteRequest) Reset() { *x = GetQuoteRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetQuoteRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetQuoteRequest) ProtoMessage() {} func (x *GetQuoteRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetQuoteRequest.ProtoReflect.Descriptor instead. func (*GetQuoteRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{13} } func (x *GetQuoteRequest) GetAddress() *Address { if x != nil { return x.Address } return nil } func (x *GetQuoteRequest) GetItems() []*CartItem { if x != nil { return x.Items } return nil } type GetQuoteResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CostUsd *Money `protobuf:"bytes,1,opt,name=cost_usd,json=costUsd,proto3" json:"cost_usd,omitempty"` } func (x *GetQuoteResponse) Reset() { *x = GetQuoteResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetQuoteResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetQuoteResponse) ProtoMessage() {} func (x *GetQuoteResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetQuoteResponse.ProtoReflect.Descriptor instead. func (*GetQuoteResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{14} } func (x *GetQuoteResponse) GetCostUsd() *Money { if x != nil { return x.CostUsd } return nil } type ShipOrderRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Address *Address `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` Items []*CartItem `protobuf:"bytes,2,rep,name=items,proto3" json:"items,omitempty"` } func (x *ShipOrderRequest) Reset() { *x = ShipOrderRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShipOrderRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShipOrderRequest) ProtoMessage() {} func (x *ShipOrderRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ShipOrderRequest.ProtoReflect.Descriptor instead. func (*ShipOrderRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{15} } func (x *ShipOrderRequest) GetAddress() *Address { if x != nil { return x.Address } return nil } func (x *ShipOrderRequest) GetItems() []*CartItem { if x != nil { return x.Items } return nil } type ShipOrderResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TrackingId string `protobuf:"bytes,1,opt,name=tracking_id,json=trackingId,proto3" json:"tracking_id,omitempty"` } func (x *ShipOrderResponse) Reset() { *x = ShipOrderResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ShipOrderResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ShipOrderResponse) ProtoMessage() {} func (x *ShipOrderResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ShipOrderResponse.ProtoReflect.Descriptor instead. func (*ShipOrderResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{16} } func (x *ShipOrderResponse) GetTrackingId() string { if x != nil { return x.TrackingId } return "" } type Address struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields StreetAddress string `protobuf:"bytes,1,opt,name=street_address,json=streetAddress,proto3" json:"street_address,omitempty"` City string `protobuf:"bytes,2,opt,name=city,proto3" json:"city,omitempty"` State string `protobuf:"bytes,3,opt,name=state,proto3" json:"state,omitempty"` Country string `protobuf:"bytes,4,opt,name=country,proto3" json:"country,omitempty"` ZipCode string `protobuf:"bytes,5,opt,name=zip_code,json=zipCode,proto3" json:"zip_code,omitempty"` } func (x *Address) Reset() { *x = Address{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Address) String() string { return protoimpl.X.MessageStringOf(x) } func (*Address) ProtoMessage() {} func (x *Address) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Address.ProtoReflect.Descriptor instead. func (*Address) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{17} } func (x *Address) GetStreetAddress() string { if x != nil { return x.StreetAddress } return "" } func (x *Address) GetCity() string { if x != nil { return x.City } return "" } func (x *Address) GetState() string { if x != nil { return x.State } return "" } func (x *Address) GetCountry() string { if x != nil { return x.Country } return "" } func (x *Address) GetZipCode() string { if x != nil { return x.ZipCode } return "" } // Represents an amount of money with its currency type. type Money struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The 3-letter currency code defined in ISO 4217. CurrencyCode string `protobuf:"bytes,1,opt,name=currency_code,json=currencyCode,proto3" json:"currency_code,omitempty"` // The whole units of the amount. // For example if `currencyCode` is `"USD"`, then 1 unit is one US dollar. Units int64 `protobuf:"varint,2,opt,name=units,proto3" json:"units,omitempty"` // Number of nano (10^-9) units of the amount. // The value must be between -999,999,999 and +999,999,999 inclusive. // If `units` is positive, `nanos` must be positive or zero. // If `units` is zero, `nanos` can be positive, zero, or negative. // If `units` is negative, `nanos` must be negative or zero. // For example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000. Nanos int32 `protobuf:"varint,3,opt,name=nanos,proto3" json:"nanos,omitempty"` } func (x *Money) Reset() { *x = Money{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Money) String() string { return protoimpl.X.MessageStringOf(x) } func (*Money) ProtoMessage() {} func (x *Money) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Money.ProtoReflect.Descriptor instead. func (*Money) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{18} } func (x *Money) GetCurrencyCode() string { if x != nil { return x.CurrencyCode } return "" } func (x *Money) GetUnits() int64 { if x != nil { return x.Units } return 0 } func (x *Money) GetNanos() int32 { if x != nil { return x.Nanos } return 0 } type GetSupportedCurrenciesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // The 3-letter currency code defined in ISO 4217. CurrencyCodes []string `protobuf:"bytes,1,rep,name=currency_codes,json=currencyCodes,proto3" json:"currency_codes,omitempty"` } func (x *GetSupportedCurrenciesResponse) Reset() { *x = GetSupportedCurrenciesResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetSupportedCurrenciesResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetSupportedCurrenciesResponse) ProtoMessage() {} func (x *GetSupportedCurrenciesResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetSupportedCurrenciesResponse.ProtoReflect.Descriptor instead. func (*GetSupportedCurrenciesResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{19} } func (x *GetSupportedCurrenciesResponse) GetCurrencyCodes() []string { if x != nil { return x.CurrencyCodes } return nil } type CurrencyConversionRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields From *Money `protobuf:"bytes,1,opt,name=from,proto3" json:"from,omitempty"` // The 3-letter currency code defined in ISO 4217. ToCode string `protobuf:"bytes,2,opt,name=to_code,json=toCode,proto3" json:"to_code,omitempty"` } func (x *CurrencyConversionRequest) Reset() { *x = CurrencyConversionRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CurrencyConversionRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CurrencyConversionRequest) ProtoMessage() {} func (x *CurrencyConversionRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CurrencyConversionRequest.ProtoReflect.Descriptor instead. func (*CurrencyConversionRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{20} } func (x *CurrencyConversionRequest) GetFrom() *Money { if x != nil { return x.From } return nil } func (x *CurrencyConversionRequest) GetToCode() string { if x != nil { return x.ToCode } return "" } type CreditCardInfo struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields CreditCardNumber string `protobuf:"bytes,1,opt,name=credit_card_number,json=creditCardNumber,proto3" json:"credit_card_number,omitempty"` CreditCardCvv int32 `protobuf:"varint,2,opt,name=credit_card_cvv,json=creditCardCvv,proto3" json:"credit_card_cvv,omitempty"` CreditCardExpirationYear int32 `protobuf:"varint,3,opt,name=credit_card_expiration_year,json=creditCardExpirationYear,proto3" json:"credit_card_expiration_year,omitempty"` CreditCardExpirationMonth int32 `protobuf:"varint,4,opt,name=credit_card_expiration_month,json=creditCardExpirationMonth,proto3" json:"credit_card_expiration_month,omitempty"` } func (x *CreditCardInfo) Reset() { *x = CreditCardInfo{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreditCardInfo) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreditCardInfo) ProtoMessage() {} func (x *CreditCardInfo) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreditCardInfo.ProtoReflect.Descriptor instead. func (*CreditCardInfo) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{21} } func (x *CreditCardInfo) GetCreditCardNumber() string { if x != nil { return x.CreditCardNumber } return "" } func (x *CreditCardInfo) GetCreditCardCvv() int32 { if x != nil { return x.CreditCardCvv } return 0 } func (x *CreditCardInfo) GetCreditCardExpirationYear() int32 { if x != nil { return x.CreditCardExpirationYear } return 0 } func (x *CreditCardInfo) GetCreditCardExpirationMonth() int32 { if x != nil { return x.CreditCardExpirationMonth } return 0 } type ChargeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Amount *Money `protobuf:"bytes,1,opt,name=amount,proto3" json:"amount,omitempty"` CreditCard *CreditCardInfo `protobuf:"bytes,2,opt,name=credit_card,json=creditCard,proto3" json:"credit_card,omitempty"` } func (x *ChargeRequest) Reset() { *x = ChargeRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChargeRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChargeRequest) ProtoMessage() {} func (x *ChargeRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ChargeRequest.ProtoReflect.Descriptor instead. func (*ChargeRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{22} } func (x *ChargeRequest) GetAmount() *Money { if x != nil { return x.Amount } return nil } func (x *ChargeRequest) GetCreditCard() *CreditCardInfo { if x != nil { return x.CreditCard } return nil } type ChargeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields TransactionId string `protobuf:"bytes,1,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"` } func (x *ChargeResponse) Reset() { *x = ChargeResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ChargeResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ChargeResponse) ProtoMessage() {} func (x *ChargeResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ChargeResponse.ProtoReflect.Descriptor instead. func (*ChargeResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{23} } func (x *ChargeResponse) GetTransactionId() string { if x != nil { return x.TransactionId } return "" } type OrderItem struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Item *CartItem `protobuf:"bytes,1,opt,name=item,proto3" json:"item,omitempty"` Cost *Money `protobuf:"bytes,2,opt,name=cost,proto3" json:"cost,omitempty"` } func (x *OrderItem) Reset() { *x = OrderItem{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OrderItem) String() string { return protoimpl.X.MessageStringOf(x) } func (*OrderItem) ProtoMessage() {} func (x *OrderItem) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use OrderItem.ProtoReflect.Descriptor instead. func (*OrderItem) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{24} } func (x *OrderItem) GetItem() *CartItem { if x != nil { return x.Item } return nil } func (x *OrderItem) GetCost() *Money { if x != nil { return x.Cost } return nil } type OrderResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields OrderId string `protobuf:"bytes,1,opt,name=order_id,json=orderId,proto3" json:"order_id,omitempty"` ShippingTrackingId string `protobuf:"bytes,2,opt,name=shipping_tracking_id,json=shippingTrackingId,proto3" json:"shipping_tracking_id,omitempty"` ShippingCost *Money `protobuf:"bytes,3,opt,name=shipping_cost,json=shippingCost,proto3" json:"shipping_cost,omitempty"` ShippingAddress *Address `protobuf:"bytes,4,opt,name=shipping_address,json=shippingAddress,proto3" json:"shipping_address,omitempty"` Items []*OrderItem `protobuf:"bytes,5,rep,name=items,proto3" json:"items,omitempty"` } func (x *OrderResult) Reset() { *x = OrderResult{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *OrderResult) String() string { return protoimpl.X.MessageStringOf(x) } func (*OrderResult) ProtoMessage() {} func (x *OrderResult) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use OrderResult.ProtoReflect.Descriptor instead. func (*OrderResult) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{25} } func (x *OrderResult) GetOrderId() string { if x != nil { return x.OrderId } return "" } func (x *OrderResult) GetShippingTrackingId() string { if x != nil { return x.ShippingTrackingId } return "" } func (x *OrderResult) GetShippingCost() *Money { if x != nil { return x.ShippingCost } return nil } func (x *OrderResult) GetShippingAddress() *Address { if x != nil { return x.ShippingAddress } return nil } func (x *OrderResult) GetItems() []*OrderItem { if x != nil { return x.Items } return nil } type SendOrderConfirmationRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` Order *OrderResult `protobuf:"bytes,2,opt,name=order,proto3" json:"order,omitempty"` } func (x *SendOrderConfirmationRequest) Reset() { *x = SendOrderConfirmationRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *SendOrderConfirmationRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*SendOrderConfirmationRequest) ProtoMessage() {} func (x *SendOrderConfirmationRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use SendOrderConfirmationRequest.ProtoReflect.Descriptor instead. func (*SendOrderConfirmationRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{26} } func (x *SendOrderConfirmationRequest) GetEmail() string { if x != nil { return x.Email } return "" } func (x *SendOrderConfirmationRequest) GetOrder() *OrderResult { if x != nil { return x.Order } return nil } type PlaceOrderRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` UserCurrency string `protobuf:"bytes,2,opt,name=user_currency,json=userCurrency,proto3" json:"user_currency,omitempty"` Address *Address `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` Email string `protobuf:"bytes,5,opt,name=email,proto3" json:"email,omitempty"` CreditCard *CreditCardInfo `protobuf:"bytes,6,opt,name=credit_card,json=creditCard,proto3" json:"credit_card,omitempty"` } func (x *PlaceOrderRequest) Reset() { *x = PlaceOrderRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PlaceOrderRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlaceOrderRequest) ProtoMessage() {} func (x *PlaceOrderRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlaceOrderRequest.ProtoReflect.Descriptor instead. func (*PlaceOrderRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{27} } func (x *PlaceOrderRequest) GetUserId() string { if x != nil { return x.UserId } return "" } func (x *PlaceOrderRequest) GetUserCurrency() string { if x != nil { return x.UserCurrency } return "" } func (x *PlaceOrderRequest) GetAddress() *Address { if x != nil { return x.Address } return nil } func (x *PlaceOrderRequest) GetEmail() string { if x != nil { return x.Email } return "" } func (x *PlaceOrderRequest) GetCreditCard() *CreditCardInfo { if x != nil { return x.CreditCard } return nil } type PlaceOrderResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Order *OrderResult `protobuf:"bytes,1,opt,name=order,proto3" json:"order,omitempty"` } func (x *PlaceOrderResponse) Reset() { *x = PlaceOrderResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *PlaceOrderResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*PlaceOrderResponse) ProtoMessage() {} func (x *PlaceOrderResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use PlaceOrderResponse.ProtoReflect.Descriptor instead. func (*PlaceOrderResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{28} } func (x *PlaceOrderResponse) GetOrder() *OrderResult { if x != nil { return x.Order } return nil } type AdRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // List of important key words from the current page describing the context. ContextKeys []string `protobuf:"bytes,1,rep,name=context_keys,json=contextKeys,proto3" json:"context_keys,omitempty"` } func (x *AdRequest) Reset() { *x = AdRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdRequest) ProtoMessage() {} func (x *AdRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AdRequest.ProtoReflect.Descriptor instead. func (*AdRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{29} } func (x *AdRequest) GetContextKeys() []string { if x != nil { return x.ContextKeys } return nil } type AdResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Ads []*Ad `protobuf:"bytes,1,rep,name=ads,proto3" json:"ads,omitempty"` } func (x *AdResponse) Reset() { *x = AdResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *AdResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*AdResponse) ProtoMessage() {} func (x *AdResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use AdResponse.ProtoReflect.Descriptor instead. func (*AdResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{30} } func (x *AdResponse) GetAds() []*Ad { if x != nil { return x.Ads } return nil } type Ad struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // url to redirect to when an ad is clicked. RedirectUrl string `protobuf:"bytes,1,opt,name=redirect_url,json=redirectUrl,proto3" json:"redirect_url,omitempty"` // short advertisement text to display. Text string `protobuf:"bytes,2,opt,name=text,proto3" json:"text,omitempty"` } func (x *Ad) Reset() { *x = Ad{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Ad) String() string { return protoimpl.X.MessageStringOf(x) } func (*Ad) ProtoMessage() {} func (x *Ad) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Ad.ProtoReflect.Descriptor instead. func (*Ad) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{31} } func (x *Ad) GetRedirectUrl() string { if x != nil { return x.RedirectUrl } return "" } func (x *Ad) GetText() string { if x != nil { return x.Text } return "" } type Flag struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` CreatedAt *timestamp.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` UpdatedAt *timestamp.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` } func (x *Flag) Reset() { *x = Flag{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *Flag) String() string { return protoimpl.X.MessageStringOf(x) } func (*Flag) ProtoMessage() {} func (x *Flag) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use Flag.ProtoReflect.Descriptor instead. func (*Flag) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{32} } func (x *Flag) GetName() string { if x != nil { return x.Name } return "" } func (x *Flag) GetDescription() string { if x != nil { return x.Description } return "" } func (x *Flag) GetEnabled() bool { if x != nil { return x.Enabled } return false } func (x *Flag) GetCreatedAt() *timestamp.Timestamp { if x != nil { return x.CreatedAt } return nil } func (x *Flag) GetUpdatedAt() *timestamp.Timestamp { if x != nil { return x.UpdatedAt } return nil } type GetFlagRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *GetFlagRequest) Reset() { *x = GetFlagRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFlagRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFlagRequest) ProtoMessage() {} func (x *GetFlagRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFlagRequest.ProtoReflect.Descriptor instead. func (*GetFlagRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{33} } func (x *GetFlagRequest) GetName() string { if x != nil { return x.Name } return "" } type GetFlagResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flag *Flag `protobuf:"bytes,1,opt,name=flag,proto3" json:"flag,omitempty"` } func (x *GetFlagResponse) Reset() { *x = GetFlagResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *GetFlagResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*GetFlagResponse) ProtoMessage() {} func (x *GetFlagResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use GetFlagResponse.ProtoReflect.Descriptor instead. func (*GetFlagResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{34} } func (x *GetFlagResponse) GetFlag() *Flag { if x != nil { return x.Flag } return nil } type CreateFlagRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Description string `protobuf:"bytes,2,opt,name=description,proto3" json:"description,omitempty"` Enabled bool `protobuf:"varint,3,opt,name=enabled,proto3" json:"enabled,omitempty"` } func (x *CreateFlagRequest) Reset() { *x = CreateFlagRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateFlagRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateFlagRequest) ProtoMessage() {} func (x *CreateFlagRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateFlagRequest.ProtoReflect.Descriptor instead. func (*CreateFlagRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{35} } func (x *CreateFlagRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *CreateFlagRequest) GetDescription() string { if x != nil { return x.Description } return "" } func (x *CreateFlagRequest) GetEnabled() bool { if x != nil { return x.Enabled } return false } type CreateFlagResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flag *Flag `protobuf:"bytes,1,opt,name=flag,proto3" json:"flag,omitempty"` } func (x *CreateFlagResponse) Reset() { *x = CreateFlagResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *CreateFlagResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*CreateFlagResponse) ProtoMessage() {} func (x *CreateFlagResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use CreateFlagResponse.ProtoReflect.Descriptor instead. func (*CreateFlagResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{36} } func (x *CreateFlagResponse) GetFlag() *Flag { if x != nil { return x.Flag } return nil } type UpdateFlagRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` Enabled bool `protobuf:"varint,2,opt,name=enabled,proto3" json:"enabled,omitempty"` } func (x *UpdateFlagRequest) Reset() { *x = UpdateFlagRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateFlagRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateFlagRequest) ProtoMessage() {} func (x *UpdateFlagRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateFlagRequest.ProtoReflect.Descriptor instead. func (*UpdateFlagRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{37} } func (x *UpdateFlagRequest) GetName() string { if x != nil { return x.Name } return "" } func (x *UpdateFlagRequest) GetEnabled() bool { if x != nil { return x.Enabled } return false } type UpdateFlagResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *UpdateFlagResponse) Reset() { *x = UpdateFlagResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *UpdateFlagResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*UpdateFlagResponse) ProtoMessage() {} func (x *UpdateFlagResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use UpdateFlagResponse.ProtoReflect.Descriptor instead. func (*UpdateFlagResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{38} } type ListFlagsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *ListFlagsRequest) Reset() { *x = ListFlagsRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListFlagsRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListFlagsRequest) ProtoMessage() {} func (x *ListFlagsRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListFlagsRequest.ProtoReflect.Descriptor instead. func (*ListFlagsRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{39} } type ListFlagsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Flag []*Flag `protobuf:"bytes,1,rep,name=flag,proto3" json:"flag,omitempty"` } func (x *ListFlagsResponse) Reset() { *x = ListFlagsResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[40] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *ListFlagsResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*ListFlagsResponse) ProtoMessage() {} func (x *ListFlagsResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[40] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use ListFlagsResponse.ProtoReflect.Descriptor instead. func (*ListFlagsResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{40} } func (x *ListFlagsResponse) GetFlag() []*Flag { if x != nil { return x.Flag } return nil } type DeleteFlagRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } func (x *DeleteFlagRequest) Reset() { *x = DeleteFlagRequest{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[41] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteFlagRequest) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteFlagRequest) ProtoMessage() {} func (x *DeleteFlagRequest) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[41] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteFlagRequest.ProtoReflect.Descriptor instead. func (*DeleteFlagRequest) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{41} } func (x *DeleteFlagRequest) GetName() string { if x != nil { return x.Name } return "" } type DeleteFlagResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } func (x *DeleteFlagResponse) Reset() { *x = DeleteFlagResponse{} if protoimpl.UnsafeEnabled { mi := &file_demo_proto_msgTypes[42] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } } func (x *DeleteFlagResponse) String() string { return protoimpl.X.MessageStringOf(x) } func (*DeleteFlagResponse) ProtoMessage() {} func (x *DeleteFlagResponse) ProtoReflect() protoreflect.Message { mi := &file_demo_proto_msgTypes[42] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { ms.StoreMessageInfo(mi) } return ms } return mi.MessageOf(x) } // Deprecated: Use DeleteFlagResponse.ProtoReflect.Descriptor instead. func (*DeleteFlagResponse) Descriptor() ([]byte, []int) { return file_demo_proto_rawDescGZIP(), []int{42} } var File_demo_proto protoreflect.FileDescriptor var file_demo_proto_rawDesc = []byte{ 0x0a, 0x0a, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x08, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x45, 0x0a, 0x08, 0x43, 0x61, 0x72, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x71, 0x75, 0x61, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x51, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x26, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x61, 0x72, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x22, 0x2b, 0x0a, 0x10, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x29, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x22, 0x49, 0x0a, 0x04, 0x43, 0x61, 0x72, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x28, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x61, 0x72, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x56, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x73, 0x22, 0x3e, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x49, 0x64, 0x73, 0x22, 0xb7, 0x01, 0x0a, 0x07, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x12, 0x2c, 0x0a, 0x09, 0x70, 0x72, 0x69, 0x63, 0x65, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x08, 0x70, 0x72, 0x69, 0x63, 0x65, 0x55, 0x73, 0x64, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x61, 0x74, 0x65, 0x67, 0x6f, 0x72, 0x69, 0x65, 0x73, 0x22, 0x45, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x22, 0x23, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2d, 0x0a, 0x15, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x22, 0x45, 0x0a, 0x16, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x07, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x73, 0x22, 0x68, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x61, 0x72, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x3e, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2a, 0x0a, 0x08, 0x63, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x07, 0x63, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x64, 0x22, 0x69, 0x0a, 0x10, 0x53, 0x68, 0x69, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x28, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x61, 0x72, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x34, 0x0a, 0x11, 0x53, 0x68, 0x69, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x22, 0x8f, 0x01, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x74, 0x72, 0x65, 0x65, 0x74, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x63, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x7a, 0x69, 0x70, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x7a, 0x69, 0x70, 0x43, 0x6f, 0x64, 0x65, 0x22, 0x58, 0x0a, 0x05, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x75, 0x6e, 0x69, 0x74, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6e, 0x61, 0x6e, 0x6f, 0x73, 0x22, 0x47, 0x0a, 0x1e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x22, 0x59, 0x0a, 0x19, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x04, 0x66, 0x72, 0x6f, 0x6d, 0x12, 0x17, 0x0a, 0x07, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x6f, 0x43, 0x6f, 0x64, 0x65, 0x22, 0xe6, 0x01, 0x0a, 0x0e, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2c, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x26, 0x0a, 0x0f, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x63, 0x76, 0x76, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x43, 0x76, 0x76, 0x12, 0x3d, 0x0a, 0x1b, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x79, 0x65, 0x61, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x18, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x59, 0x65, 0x61, 0x72, 0x12, 0x3f, 0x0a, 0x1c, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x5f, 0x65, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6d, 0x6f, 0x6e, 0x74, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x19, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x45, 0x78, 0x70, 0x69, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4d, 0x6f, 0x6e, 0x74, 0x68, 0x22, 0x73, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x06, 0x61, 0x6d, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x22, 0x37, 0x0a, 0x0e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x58, 0x0a, 0x09, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x26, 0x0a, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x12, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x61, 0x72, 0x74, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x04, 0x69, 0x74, 0x65, 0x6d, 0x12, 0x23, 0x0a, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x04, 0x63, 0x6f, 0x73, 0x74, 0x22, 0xf9, 0x01, 0x0a, 0x0b, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x19, 0x0a, 0x08, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x64, 0x12, 0x30, 0x0a, 0x14, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0d, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x52, 0x0c, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x10, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x0f, 0x73, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x29, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x61, 0x0a, 0x1c, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x2b, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0xcf, 0x01, 0x0a, 0x11, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x75, 0x73, 0x65, 0x72, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x2b, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x39, 0x0a, 0x0b, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x5f, 0x63, 0x61, 0x72, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x72, 0x65, 0x64, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x69, 0x74, 0x43, 0x61, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x12, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x05, 0x6f, 0x72, 0x64, 0x65, 0x72, 0x22, 0x2e, 0x0a, 0x09, 0x41, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x4b, 0x65, 0x79, 0x73, 0x22, 0x2c, 0x0a, 0x0a, 0x41, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1e, 0x0a, 0x03, 0x61, 0x64, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0c, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x41, 0x64, 0x52, 0x03, 0x61, 0x64, 0x73, 0x22, 0x3b, 0x0a, 0x02, 0x41, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x55, 0x72, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x65, 0x78, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x65, 0x78, 0x74, 0x22, 0xcc, 0x01, 0x0a, 0x04, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x24, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x35, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x63, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x38, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x41, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x37, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x04, 0x66, 0x6c, 0x61, 0x67, 0x22, 0x27, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xb8, 0x01, 0x0a, 0x0b, 0x43, 0x61, 0x72, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x12, 0x18, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x74, 0x65, 0x6d, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x35, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x74, 0x12, 0x18, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x43, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0e, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x61, 0x72, 0x74, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x09, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x61, 0x72, 0x74, 0x12, 0x1a, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x43, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x32, 0x7d, 0x0a, 0x15, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x64, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x24, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x25, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0xf1, 0x01, 0x0a, 0x15, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x43, 0x61, 0x74, 0x61, 0x6c, 0x6f, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x41, 0x0a, 0x0c, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1e, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0a, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x12, 0x1b, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x11, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x22, 0x00, 0x12, 0x55, 0x0a, 0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x12, 0x1f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x20, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x50, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0x9e, 0x01, 0x0a, 0x0f, 0x53, 0x68, 0x69, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x43, 0x0a, 0x08, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x12, 0x19, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1a, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x51, 0x75, 0x6f, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x09, 0x53, 0x68, 0x69, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1a, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x53, 0x68, 0x69, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x53, 0x68, 0x69, 0x70, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0xab, 0x01, 0x0a, 0x0f, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x55, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x12, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x28, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x75, 0x70, 0x70, 0x6f, 0x72, 0x74, 0x65, 0x64, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x69, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x07, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x74, 0x12, 0x23, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x43, 0x6f, 0x6e, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4d, 0x6f, 0x6e, 0x65, 0x79, 0x22, 0x00, 0x32, 0x4f, 0x0a, 0x0e, 0x50, 0x61, 0x79, 0x6d, 0x65, 0x6e, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x3d, 0x0a, 0x06, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x12, 0x17, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x18, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x68, 0x61, 0x72, 0x67, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0x62, 0x0a, 0x0c, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x52, 0x0a, 0x15, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x26, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x72, 0x6d, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0f, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x32, 0x5c, 0x0a, 0x0f, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x6f, 0x75, 0x74, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x49, 0x0a, 0x0a, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x12, 0x1b, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x50, 0x6c, 0x61, 0x63, 0x65, 0x4f, 0x72, 0x64, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0x42, 0x0a, 0x09, 0x41, 0x64, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x35, 0x0a, 0x06, 0x47, 0x65, 0x74, 0x41, 0x64, 0x73, 0x12, 0x13, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x41, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x41, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x32, 0xff, 0x02, 0x0a, 0x12, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x40, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x18, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x19, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x47, 0x65, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1b, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1b, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x46, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x12, 0x1a, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x46, 0x6c, 0x61, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x12, 0x1b, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x46, 0x6c, 0x61, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x13, 0x5a, 0x11, 0x67, 0x65, 0x6e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x6f, 0x74, 0x65, 0x6c, 0x64, 0x65, 0x6d, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( file_demo_proto_rawDescOnce sync.Once file_demo_proto_rawDescData = file_demo_proto_rawDesc ) func file_demo_proto_rawDescGZIP() []byte { file_demo_proto_rawDescOnce.Do(func() { file_demo_proto_rawDescData = protoimpl.X.CompressGZIP(file_demo_proto_rawDescData) }) return file_demo_proto_rawDescData } var file_demo_proto_msgTypes = make([]protoimpl.MessageInfo, 43) var file_demo_proto_goTypes = []interface{}{ (*CartItem)(nil), // 0: oteldemo.CartItem (*AddItemRequest)(nil), // 1: oteldemo.AddItemRequest (*EmptyCartRequest)(nil), // 2: oteldemo.EmptyCartRequest (*GetCartRequest)(nil), // 3: oteldemo.GetCartRequest (*Cart)(nil), // 4: oteldemo.Cart (*Empty)(nil), // 5: oteldemo.Empty (*ListRecommendationsRequest)(nil), // 6: oteldemo.ListRecommendationsRequest (*ListRecommendationsResponse)(nil), // 7: oteldemo.ListRecommendationsResponse (*Product)(nil), // 8: oteldemo.Product (*ListProductsResponse)(nil), // 9: oteldemo.ListProductsResponse (*GetProductRequest)(nil), // 10: oteldemo.GetProductRequest (*SearchProductsRequest)(nil), // 11: oteldemo.SearchProductsRequest (*SearchProductsResponse)(nil), // 12: oteldemo.SearchProductsResponse (*GetQuoteRequest)(nil), // 13: oteldemo.GetQuoteRequest (*GetQuoteResponse)(nil), // 14: oteldemo.GetQuoteResponse (*ShipOrderRequest)(nil), // 15: oteldemo.ShipOrderRequest (*ShipOrderResponse)(nil), // 16: oteldemo.ShipOrderResponse (*Address)(nil), // 17: oteldemo.Address (*Money)(nil), // 18: oteldemo.Money (*GetSupportedCurrenciesResponse)(nil), // 19: oteldemo.GetSupportedCurrenciesResponse (*CurrencyConversionRequest)(nil), // 20: oteldemo.CurrencyConversionRequest (*CreditCardInfo)(nil), // 21: oteldemo.CreditCardInfo (*ChargeRequest)(nil), // 22: oteldemo.ChargeRequest (*ChargeResponse)(nil), // 23: oteldemo.ChargeResponse (*OrderItem)(nil), // 24: oteldemo.OrderItem (*OrderResult)(nil), // 25: oteldemo.OrderResult (*SendOrderConfirmationRequest)(nil), // 26: oteldemo.SendOrderConfirmationRequest (*PlaceOrderRequest)(nil), // 27: oteldemo.PlaceOrderRequest (*PlaceOrderResponse)(nil), // 28: oteldemo.PlaceOrderResponse (*AdRequest)(nil), // 29: oteldemo.AdRequest (*AdResponse)(nil), // 30: oteldemo.AdResponse (*Ad)(nil), // 31: oteldemo.Ad (*Flag)(nil), // 32: oteldemo.Flag (*GetFlagRequest)(nil), // 33: oteldemo.GetFlagRequest (*GetFlagResponse)(nil), // 34: oteldemo.GetFlagResponse (*CreateFlagRequest)(nil), // 35: oteldemo.CreateFlagRequest (*CreateFlagResponse)(nil), // 36: oteldemo.CreateFlagResponse (*UpdateFlagRequest)(nil), // 37: oteldemo.UpdateFlagRequest (*UpdateFlagResponse)(nil), // 38: oteldemo.UpdateFlagResponse (*ListFlagsRequest)(nil), // 39: oteldemo.ListFlagsRequest (*ListFlagsResponse)(nil), // 40: oteldemo.ListFlagsResponse (*DeleteFlagRequest)(nil), // 41: oteldemo.DeleteFlagRequest (*DeleteFlagResponse)(nil), // 42: oteldemo.DeleteFlagResponse (*timestamp.Timestamp)(nil), // 43: google.protobuf.Timestamp } var file_demo_proto_depIdxs = []int32{ 0, // 0: oteldemo.AddItemRequest.item:type_name -> oteldemo.CartItem 0, // 1: oteldemo.Cart.items:type_name -> oteldemo.CartItem 18, // 2: oteldemo.Product.price_usd:type_name -> oteldemo.Money 8, // 3: oteldemo.ListProductsResponse.products:type_name -> oteldemo.Product 8, // 4: oteldemo.SearchProductsResponse.results:type_name -> oteldemo.Product 17, // 5: oteldemo.GetQuoteRequest.address:type_name -> oteldemo.Address 0, // 6: oteldemo.GetQuoteRequest.items:type_name -> oteldemo.CartItem 18, // 7: oteldemo.GetQuoteResponse.cost_usd:type_name -> oteldemo.Money 17, // 8: oteldemo.ShipOrderRequest.address:type_name -> oteldemo.Address 0, // 9: oteldemo.ShipOrderRequest.items:type_name -> oteldemo.CartItem 18, // 10: oteldemo.CurrencyConversionRequest.from:type_name -> oteldemo.Money 18, // 11: oteldemo.ChargeRequest.amount:type_name -> oteldemo.Money 21, // 12: oteldemo.ChargeRequest.credit_card:type_name -> oteldemo.CreditCardInfo 0, // 13: oteldemo.OrderItem.item:type_name -> oteldemo.CartItem 18, // 14: oteldemo.OrderItem.cost:type_name -> oteldemo.Money 18, // 15: oteldemo.OrderResult.shipping_cost:type_name -> oteldemo.Money 17, // 16: oteldemo.OrderResult.shipping_address:type_name -> oteldemo.Address 24, // 17: oteldemo.OrderResult.items:type_name -> oteldemo.OrderItem 25, // 18: oteldemo.SendOrderConfirmationRequest.order:type_name -> oteldemo.OrderResult 17, // 19: oteldemo.PlaceOrderRequest.address:type_name -> oteldemo.Address 21, // 20: oteldemo.PlaceOrderRequest.credit_card:type_name -> oteldemo.CreditCardInfo 25, // 21: oteldemo.PlaceOrderResponse.order:type_name -> oteldemo.OrderResult 31, // 22: oteldemo.AdResponse.ads:type_name -> oteldemo.Ad 43, // 23: oteldemo.Flag.created_at:type_name -> google.protobuf.Timestamp 43, // 24: oteldemo.Flag.updated_at:type_name -> google.protobuf.Timestamp 32, // 25: oteldemo.GetFlagResponse.flag:type_name -> oteldemo.Flag 32, // 26: oteldemo.CreateFlagResponse.flag:type_name -> oteldemo.Flag 32, // 27: oteldemo.ListFlagsResponse.flag:type_name -> oteldemo.Flag 1, // 28: oteldemo.CartService.AddItem:input_type -> oteldemo.AddItemRequest 3, // 29: oteldemo.CartService.GetCart:input_type -> oteldemo.GetCartRequest 2, // 30: oteldemo.CartService.EmptyCart:input_type -> oteldemo.EmptyCartRequest 6, // 31: oteldemo.RecommendationService.ListRecommendations:input_type -> oteldemo.ListRecommendationsRequest 5, // 32: oteldemo.ProductCatalogService.ListProducts:input_type -> oteldemo.Empty 10, // 33: oteldemo.ProductCatalogService.GetProduct:input_type -> oteldemo.GetProductRequest 11, // 34: oteldemo.ProductCatalogService.SearchProducts:input_type -> oteldemo.SearchProductsRequest 13, // 35: oteldemo.ShippingService.GetQuote:input_type -> oteldemo.GetQuoteRequest 15, // 36: oteldemo.ShippingService.ShipOrder:input_type -> oteldemo.ShipOrderRequest 5, // 37: oteldemo.CurrencyService.GetSupportedCurrencies:input_type -> oteldemo.Empty 20, // 38: oteldemo.CurrencyService.Convert:input_type -> oteldemo.CurrencyConversionRequest 22, // 39: oteldemo.PaymentService.Charge:input_type -> oteldemo.ChargeRequest 26, // 40: oteldemo.EmailService.SendOrderConfirmation:input_type -> oteldemo.SendOrderConfirmationRequest 27, // 41: oteldemo.CheckoutService.PlaceOrder:input_type -> oteldemo.PlaceOrderRequest 29, // 42: oteldemo.AdService.GetAds:input_type -> oteldemo.AdRequest 33, // 43: oteldemo.FeatureFlagService.GetFlag:input_type -> oteldemo.GetFlagRequest 35, // 44: oteldemo.FeatureFlagService.CreateFlag:input_type -> oteldemo.CreateFlagRequest 37, // 45: oteldemo.FeatureFlagService.UpdateFlag:input_type -> oteldemo.UpdateFlagRequest 39, // 46: oteldemo.FeatureFlagService.ListFlags:input_type -> oteldemo.ListFlagsRequest 41, // 47: oteldemo.FeatureFlagService.DeleteFlag:input_type -> oteldemo.DeleteFlagRequest 5, // 48: oteldemo.CartService.AddItem:output_type -> oteldemo.Empty 4, // 49: oteldemo.CartService.GetCart:output_type -> oteldemo.Cart 5, // 50: oteldemo.CartService.EmptyCart:output_type -> oteldemo.Empty 7, // 51: oteldemo.RecommendationService.ListRecommendations:output_type -> oteldemo.ListRecommendationsResponse 9, // 52: oteldemo.ProductCatalogService.ListProducts:output_type -> oteldemo.ListProductsResponse 8, // 53: oteldemo.ProductCatalogService.GetProduct:output_type -> oteldemo.Product 12, // 54: oteldemo.ProductCatalogService.SearchProducts:output_type -> oteldemo.SearchProductsResponse 14, // 55: oteldemo.ShippingService.GetQuote:output_type -> oteldemo.GetQuoteResponse 16, // 56: oteldemo.ShippingService.ShipOrder:output_type -> oteldemo.ShipOrderResponse 19, // 57: oteldemo.CurrencyService.GetSupportedCurrencies:output_type -> oteldemo.GetSupportedCurrenciesResponse 18, // 58: oteldemo.CurrencyService.Convert:output_type -> oteldemo.Money 23, // 59: oteldemo.PaymentService.Charge:output_type -> oteldemo.ChargeResponse 5, // 60: oteldemo.EmailService.SendOrderConfirmation:output_type -> oteldemo.Empty 28, // 61: oteldemo.CheckoutService.PlaceOrder:output_type -> oteldemo.PlaceOrderResponse 30, // 62: oteldemo.AdService.GetAds:output_type -> oteldemo.AdResponse 34, // 63: oteldemo.FeatureFlagService.GetFlag:output_type -> oteldemo.GetFlagResponse 36, // 64: oteldemo.FeatureFlagService.CreateFlag:output_type -> oteldemo.CreateFlagResponse 38, // 65: oteldemo.FeatureFlagService.UpdateFlag:output_type -> oteldemo.UpdateFlagResponse 40, // 66: oteldemo.FeatureFlagService.ListFlags:output_type -> oteldemo.ListFlagsResponse 42, // 67: oteldemo.FeatureFlagService.DeleteFlag:output_type -> oteldemo.DeleteFlagResponse 48, // [48:68] is the sub-list for method output_type 28, // [28:48] is the sub-list for method input_type 28, // [28:28] is the sub-list for extension type_name 28, // [28:28] is the sub-list for extension extendee 0, // [0:28] is the sub-list for field type_name } func init() { file_demo_proto_init() } func file_demo_proto_init() { if File_demo_proto != nil { return } if !protoimpl.UnsafeEnabled { file_demo_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CartItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AddItemRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*EmptyCartRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetCartRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Cart); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Empty); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRecommendationsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListRecommendationsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Product); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListProductsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetProductRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchProductsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SearchProductsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetQuoteRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetQuoteResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShipOrderRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ShipOrderResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Address); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Money); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetSupportedCurrenciesResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CurrencyConversionRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreditCardInfo); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChargeRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ChargeResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrderItem); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*OrderResult); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SendOrderConfirmationRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PlaceOrderRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PlaceOrderResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AdResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Ad); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Flag); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFlagRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetFlagResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateFlagRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateFlagResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateFlagRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateFlagResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListFlagsRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[40].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListFlagsResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[41].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFlagRequest); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } file_demo_proto_msgTypes[42].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteFlagResponse); i { case 0: return &v.state case 1: return &v.sizeCache case 2: return &v.unknownFields default: return nil } } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_demo_proto_rawDesc, NumEnums: 0, NumMessages: 43, NumExtensions: 0, NumServices: 10, }, GoTypes: file_demo_proto_goTypes, DependencyIndexes: file_demo_proto_depIdxs, MessageInfos: file_demo_proto_msgTypes, }.Build() File_demo_proto = out.File file_demo_proto_rawDesc = nil file_demo_proto_goTypes = nil file_demo_proto_depIdxs = nil }