blob: 92b93d49d5eb8e2820587df1bfcf6e2ebdb652e5 [file] [log] [blame]
// Code generated by protoc-gen-go. DO NOT EDIT.
// source: booking_service.proto
/*
Package ext_maps_booking_partner_v2 is a generated protocol buffer package.
It is generated from these files:
booking_service.proto
It has these top-level messages:
Slot
Lease
LeaseReference
Booking
UserInformation
PostalAddress
PaymentProcessingParameters
Price
UserPaymentOption
PaymentInformation
BookingFailure
Resources
CheckAvailabilityRequest
CheckAvailabilityResponse
CreateLeaseRequest
CreateLeaseResponse
CreateBookingRequest
CreateBookingResponse
UpdateBookingRequest
UpdateBookingResponse
GetBookingStatusRequest
GetBookingStatusResponse
ListBookingsRequest
ListBookingsResponse
*/
package ext_maps_booking_partner_v2
import proto "github.com/golang/protobuf/proto"
import fmt "fmt"
import math "math"
import google_protobuf "github.com/golang/protobuf/ptypes/duration"
import google_protobuf1 "google.golang.org/genproto/protobuf/field_mask"
import google_protobuf2 "github.com/golang/protobuf/ptypes/timestamp"
import (
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
)
// Reference imports to suppress errors if they are not otherwise used.
var _ = proto.Marshal
var _ = fmt.Errorf
var _ = math.Inf
// This is a compile-time assertion to ensure that this generated file
// is compatible with the proto package it is being compiled against.
// A compilation error at this line likely means your copy of the
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
type PaymentOptionType int32
const (
PaymentOptionType_PAYMENT_OPTION_TYPE_UNSPECIFIED PaymentOptionType = 0
PaymentOptionType_PAYMENT_OPTION_SINGLE_USE PaymentOptionType = 1
PaymentOptionType_PAYMENT_OPTION_MULTI_USE PaymentOptionType = 2
PaymentOptionType_PAYMENT_OPTION_UNLIMITED_USE PaymentOptionType = 3
)
var PaymentOptionType_name = map[int32]string{
0: "PAYMENT_OPTION_TYPE_UNSPECIFIED",
1: "PAYMENT_OPTION_SINGLE_USE",
2: "PAYMENT_OPTION_MULTI_USE",
3: "PAYMENT_OPTION_UNLIMITED_USE",
}
var PaymentOptionType_value = map[string]int32{
"PAYMENT_OPTION_TYPE_UNSPECIFIED": 0,
"PAYMENT_OPTION_SINGLE_USE": 1,
"PAYMENT_OPTION_MULTI_USE": 2,
"PAYMENT_OPTION_UNLIMITED_USE": 3,
}
func (x PaymentOptionType) String() string {
return proto.EnumName(PaymentOptionType_name, int32(x))
}
func (PaymentOptionType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
// Status of a booking.
//
// Updating booking status does not change the status of the associated payment.
// Prepayment status updates should be done using the PrepaymentStatus enum.
//
// nextID: 6
type BookingStatus int32
const (
// Not specified.
BookingStatus_BOOKING_STATUS_UNSPECIFIED BookingStatus = 0
// Booking has been confirmed
BookingStatus_CONFIRMED BookingStatus = 1
// Booking is awaiting confirmation by the merchant before it can transition
// into CONFIRMED status
BookingStatus_PENDING_MERCHANT_CONFIRMATION BookingStatus = 2
// Booking has been canceled on behalf of the user.
// The merchant can still trigger a manual refund.
BookingStatus_CANCELED BookingStatus = 3
// User did not show for the appointment
BookingStatus_NO_SHOW BookingStatus = 4
// User did not show for the appointment in violation of the cancellation
// policy.
BookingStatus_NO_SHOW_PENALIZED BookingStatus = 5
)
var BookingStatus_name = map[int32]string{
0: "BOOKING_STATUS_UNSPECIFIED",
1: "CONFIRMED",
2: "PENDING_MERCHANT_CONFIRMATION",
3: "CANCELED",
4: "NO_SHOW",
5: "NO_SHOW_PENALIZED",
}
var BookingStatus_value = map[string]int32{
"BOOKING_STATUS_UNSPECIFIED": 0,
"CONFIRMED": 1,
"PENDING_MERCHANT_CONFIRMATION": 2,
"CANCELED": 3,
"NO_SHOW": 4,
"NO_SHOW_PENALIZED": 5,
}
func (x BookingStatus) String() string {
return proto.EnumName(BookingStatus_name, int32(x))
}
func (BookingStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
// Prepayment status of a booking.
// Updating payment status will trigger an update on the payment status of the
// associated booking (if applicable).
// Currently, the only supported transition is from PREPAYMENT_PROVIDED to
// PREPAYMENT_REFUNDED, which will initiate a non-reversible refund on the
// associated payment transaction.
type PrepaymentStatus int32
const (
// Not specified, defaults to PREPAYMENT_NOT_PROVIDED.
PrepaymentStatus_PREPAYMENT_STATUS_UNSPECIFIED PrepaymentStatus = 0
// The fee for the booking has been paid in advance.
PrepaymentStatus_PREPAYMENT_PROVIDED PrepaymentStatus = 1
// The fee for the booking has not been paid in advance.
PrepaymentStatus_PREPAYMENT_NOT_PROVIDED PrepaymentStatus = 2
// The fee was previously PREPAYMENT_PROVIDED but has now been refunded.
PrepaymentStatus_PREPAYMENT_REFUNDED PrepaymentStatus = 3
// The fee was previously PREPAYMENT_PROVIDED but now has been credited
// (user given a UserPaymentOption as a voucher for the booking).
// If this is set, the response should also include the updated
// UserPaymentOption.
PrepaymentStatus_PREPAYMENT_CREDITED PrepaymentStatus = 4
)
var PrepaymentStatus_name = map[int32]string{
0: "PREPAYMENT_STATUS_UNSPECIFIED",
1: "PREPAYMENT_PROVIDED",
2: "PREPAYMENT_NOT_PROVIDED",
3: "PREPAYMENT_REFUNDED",
4: "PREPAYMENT_CREDITED",
}
var PrepaymentStatus_value = map[string]int32{
"PREPAYMENT_STATUS_UNSPECIFIED": 0,
"PREPAYMENT_PROVIDED": 1,
"PREPAYMENT_NOT_PROVIDED": 2,
"PREPAYMENT_REFUNDED": 3,
"PREPAYMENT_CREDITED": 4,
}
func (x PrepaymentStatus) String() string {
return proto.EnumName(PrepaymentStatus_name, int32(x))
}
func (PrepaymentStatus) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
type PaymentProcessingParameters_PaymentProcessor int32
const (
PaymentProcessingParameters_PAYMENT_PROCESSOR_UNSPECIFIED PaymentProcessingParameters_PaymentProcessor = 0
PaymentProcessingParameters_PROCESSOR_STRIPE PaymentProcessingParameters_PaymentProcessor = 1
PaymentProcessingParameters_PROCESSOR_BRAINTREE PaymentProcessingParameters_PaymentProcessor = 2
)
var PaymentProcessingParameters_PaymentProcessor_name = map[int32]string{
0: "PAYMENT_PROCESSOR_UNSPECIFIED",
1: "PROCESSOR_STRIPE",
2: "PROCESSOR_BRAINTREE",
}
var PaymentProcessingParameters_PaymentProcessor_value = map[string]int32{
"PAYMENT_PROCESSOR_UNSPECIFIED": 0,
"PROCESSOR_STRIPE": 1,
"PROCESSOR_BRAINTREE": 2,
}
func (x PaymentProcessingParameters_PaymentProcessor) String() string {
return proto.EnumName(PaymentProcessingParameters_PaymentProcessor_name, int32(x))
}
func (PaymentProcessingParameters_PaymentProcessor) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{6, 0}
}
// Who handles payment processing?
// If payment is processed by the partner, CreateBooking request will
// include additional parameters (PaymentProcessingParameters) indicating
// the payment method to be used to process the payment.
type PaymentInformation_PaymentProcessedBy int32
const (
PaymentInformation_PAYMENT_PROCESSED_BY_UNSPECIFIED PaymentInformation_PaymentProcessedBy = 0
PaymentInformation_PROCESSED_BY_GOOGLE PaymentInformation_PaymentProcessedBy = 1
PaymentInformation_PROCESSED_BY_PARTNER PaymentInformation_PaymentProcessedBy = 2
)
var PaymentInformation_PaymentProcessedBy_name = map[int32]string{
0: "PAYMENT_PROCESSED_BY_UNSPECIFIED",
1: "PROCESSED_BY_GOOGLE",
2: "PROCESSED_BY_PARTNER",
}
var PaymentInformation_PaymentProcessedBy_value = map[string]int32{
"PAYMENT_PROCESSED_BY_UNSPECIFIED": 0,
"PROCESSED_BY_GOOGLE": 1,
"PROCESSED_BY_PARTNER": 2,
}
func (x PaymentInformation_PaymentProcessedBy) String() string {
return proto.EnumName(PaymentInformation_PaymentProcessedBy_name, int32(x))
}
func (PaymentInformation_PaymentProcessedBy) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{9, 0}
}
type BookingFailure_Cause int32
const (
// Default value: Don't use; amounts to an "unknown error"
BookingFailure_CAUSE_UNSPECIFIED BookingFailure_Cause = 0
// The referenced availability slot is not available any longer.
BookingFailure_SLOT_UNAVAILABLE BookingFailure_Cause = 1
// The user has already booked an appointment for the referenced
// availability slot.
BookingFailure_SLOT_ALREADY_BOOKED_BY_USER BookingFailure_Cause = 2
// The lease (if provided) has expired and cannot be used any longer to
// complete the requested booking.
BookingFailure_LEASE_EXPIRED BookingFailure_Cause = 3
// The requested cancellation cannot be performed at the current time due
// to time restrictions in the merchant's cancellation policy.
BookingFailure_OUTSIDE_CANCELLATION_WINDOW BookingFailure_Cause = 4
// An error was encountered while processing the payment because the
// provided credit card type was not accepted by the merchant. The credit
// card type must be supplied in rejected_card_type.
BookingFailure_PAYMENT_ERROR_CARD_TYPE_REJECTED BookingFailure_Cause = 5
// An error was encountered while processing the payment because the
// provided credit card was declined.
BookingFailure_PAYMENT_ERROR_CARD_DECLINED BookingFailure_Cause = 6
// An error was encountered with the pack/membership used to pay for the
// booking. There could be no valid uses left, it could have expired, etc.
BookingFailure_PAYMENT_OPTION_NOT_VALID BookingFailure_Cause = 7
// An error was encountered while processing the payment for this booking.
// Use this value to indicate a general payment related error, only if the
// error does not match to a specific payment error above.
BookingFailure_PAYMENT_ERROR BookingFailure_Cause = 8
// User cannot use the given payment option (e.g. user trying to use a
// first time price for the second time).
BookingFailure_USER_CANNOT_USE_PAYMENT_OPTION BookingFailure_Cause = 9
// A booking that the user tried to cancel has already been cancelled.
BookingFailure_BOOKING_ALREADY_CANCELLED BookingFailure_Cause = 10
// A booking that the user tried to cancel is not cancellable.
BookingFailure_BOOKING_NOT_CANCELLABLE BookingFailure_Cause = 11
)
var BookingFailure_Cause_name = map[int32]string{
0: "CAUSE_UNSPECIFIED",
1: "SLOT_UNAVAILABLE",
2: "SLOT_ALREADY_BOOKED_BY_USER",
3: "LEASE_EXPIRED",
4: "OUTSIDE_CANCELLATION_WINDOW",
5: "PAYMENT_ERROR_CARD_TYPE_REJECTED",
6: "PAYMENT_ERROR_CARD_DECLINED",
7: "PAYMENT_OPTION_NOT_VALID",
8: "PAYMENT_ERROR",
9: "USER_CANNOT_USE_PAYMENT_OPTION",
10: "BOOKING_ALREADY_CANCELLED",
11: "BOOKING_NOT_CANCELLABLE",
}
var BookingFailure_Cause_value = map[string]int32{
"CAUSE_UNSPECIFIED": 0,
"SLOT_UNAVAILABLE": 1,
"SLOT_ALREADY_BOOKED_BY_USER": 2,
"LEASE_EXPIRED": 3,
"OUTSIDE_CANCELLATION_WINDOW": 4,
"PAYMENT_ERROR_CARD_TYPE_REJECTED": 5,
"PAYMENT_ERROR_CARD_DECLINED": 6,
"PAYMENT_OPTION_NOT_VALID": 7,
"PAYMENT_ERROR": 8,
"USER_CANNOT_USE_PAYMENT_OPTION": 9,
"BOOKING_ALREADY_CANCELLED": 10,
"BOOKING_NOT_CANCELLABLE": 11,
}
func (x BookingFailure_Cause) String() string {
return proto.EnumName(BookingFailure_Cause_name, int32(x))
}
func (BookingFailure_Cause) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 0} }
// Set if cause is PAYMENT_ERROR_CARD_TYPE_REJECTED to indicate the type of
// credit card that was rejected.
type BookingFailure_CreditCardType int32
const (
// Default value. Used if credit card type does not match to one below.
BookingFailure_CREDIT_CARD_TYPE_UNSPECIFIED BookingFailure_CreditCardType = 0
BookingFailure_VISA BookingFailure_CreditCardType = 1
BookingFailure_MASTERCARD BookingFailure_CreditCardType = 2
BookingFailure_AMERICAN_EXPRESS BookingFailure_CreditCardType = 3
BookingFailure_DISCOVER BookingFailure_CreditCardType = 4
)
var BookingFailure_CreditCardType_name = map[int32]string{
0: "CREDIT_CARD_TYPE_UNSPECIFIED",
1: "VISA",
2: "MASTERCARD",
3: "AMERICAN_EXPRESS",
4: "DISCOVER",
}
var BookingFailure_CreditCardType_value = map[string]int32{
"CREDIT_CARD_TYPE_UNSPECIFIED": 0,
"VISA": 1,
"MASTERCARD": 2,
"AMERICAN_EXPRESS": 3,
"DISCOVER": 4,
}
func (x BookingFailure_CreditCardType) String() string {
return proto.EnumName(BookingFailure_CreditCardType_name, int32(x))
}
func (BookingFailure_CreditCardType) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{10, 1}
}
// This enum indicates what requirements exist for the user to acknowledge or
// view the requested slots duration/end time.
type CheckAvailabilityResponse_DurationRequirement int32
const (
// The handling of the end time is not specified. This is the default.
CheckAvailabilityResponse_DURATION_REQUIREMENT_UNSPECIFIED CheckAvailabilityResponse_DurationRequirement = 0
// The end time is not shown to the user.
CheckAvailabilityResponse_DO_NOT_SHOW_DURATION CheckAvailabilityResponse_DurationRequirement = 1
// The end time has to be shown to the user before an appointment can be
// made.
CheckAvailabilityResponse_MUST_SHOW_DURATION CheckAvailabilityResponse_DurationRequirement = 2
)
var CheckAvailabilityResponse_DurationRequirement_name = map[int32]string{
0: "DURATION_REQUIREMENT_UNSPECIFIED",
1: "DO_NOT_SHOW_DURATION",
2: "MUST_SHOW_DURATION",
}
var CheckAvailabilityResponse_DurationRequirement_value = map[string]int32{
"DURATION_REQUIREMENT_UNSPECIFIED": 0,
"DO_NOT_SHOW_DURATION": 1,
"MUST_SHOW_DURATION": 2,
}
func (x CheckAvailabilityResponse_DurationRequirement) String() string {
return proto.EnumName(CheckAvailabilityResponse_DurationRequirement_name, int32(x))
}
func (CheckAvailabilityResponse_DurationRequirement) EnumDescriptor() ([]byte, []int) {
return fileDescriptor0, []int{13, 0}
}
// An inventory slot
type Slot struct {
// ID of the merchant for the slot
MerchantId string `protobuf:"bytes,1,opt,name=merchant_id,json=merchantId" json:"merchant_id,omitempty"`
// ID of the merchant service
ServiceId string `protobuf:"bytes,2,opt,name=service_id,json=serviceId" json:"service_id,omitempty"`
// Start time of the appointment slot
StartTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=start_time,json=startTime" json:"start_time,omitempty"`
// Duration of the appointment slot
Duration *google_protobuf.Duration `protobuf:"bytes,4,opt,name=duration" json:"duration,omitempty"`
// Opaque tag that identifies the availability slot and matches the value
// provided in the availability feed
AvailabilityTag string `protobuf:"bytes,5,opt,name=availability_tag,json=availabilityTag" json:"availability_tag,omitempty"`
// The set of resources that disambiguates the appointment slot, e.g. by
// indicating the staff member and room selected by the user
Resources *Resources `protobuf:"bytes,6,opt,name=resources" json:"resources,omitempty"`
}
func (m *Slot) Reset() { *m = Slot{} }
func (m *Slot) String() string { return proto.CompactTextString(m) }
func (*Slot) ProtoMessage() {}
func (*Slot) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
func (m *Slot) GetMerchantId() string {
if m != nil {
return m.MerchantId
}
return ""
}
func (m *Slot) GetServiceId() string {
if m != nil {
return m.ServiceId
}
return ""
}
func (m *Slot) GetStartTime() *google_protobuf2.Timestamp {
if m != nil {
return m.StartTime
}
return nil
}
func (m *Slot) GetDuration() *google_protobuf.Duration {
if m != nil {
return m.Duration
}
return nil
}
func (m *Slot) GetAvailabilityTag() string {
if m != nil {
return m.AvailabilityTag
}
return ""
}
func (m *Slot) GetResources() *Resources {
if m != nil {
return m.Resources
}
return nil
}
// Temporary lease for an inventory slot
type Lease struct {
// ID of the lease.
// Not populated in CreateLeaseRequest. The value is chosen by the partner and
// has to be returned in the response of CreateLease.
LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId" json:"lease_id,omitempty"`
// The appointment slot that the lease is created for.
Slot *Slot `protobuf:"bytes,2,opt,name=slot" json:"slot,omitempty"`
// Unique identifier for this lease, chosen by Reserve with Google. Serves as
// an idempotency token for [ext.maps.booking.partner.v2.CreateLease]
// requests.
UserReference string `protobuf:"bytes,3,opt,name=user_reference,json=userReference" json:"user_reference,omitempty"`
// Expiration time of the lease
LeaseExpirationTime *google_protobuf2.Timestamp `protobuf:"bytes,4,opt,name=lease_expiration_time,json=leaseExpirationTime" json:"lease_expiration_time,omitempty"`
}
func (m *Lease) Reset() { *m = Lease{} }
func (m *Lease) String() string { return proto.CompactTextString(m) }
func (*Lease) ProtoMessage() {}
func (*Lease) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
func (m *Lease) GetLeaseId() string {
if m != nil {
return m.LeaseId
}
return ""
}
func (m *Lease) GetSlot() *Slot {
if m != nil {
return m.Slot
}
return nil
}
func (m *Lease) GetUserReference() string {
if m != nil {
return m.UserReference
}
return ""
}
func (m *Lease) GetLeaseExpirationTime() *google_protobuf2.Timestamp {
if m != nil {
return m.LeaseExpirationTime
}
return nil
}
// Reference to a [ext.maps.booking.partner.v2.Lease] that has been created via
// [ext.maps.booking.partner.v2.CreateLease]
type LeaseReference struct {
// Lease ID
LeaseId string `protobuf:"bytes,1,opt,name=lease_id,json=leaseId" json:"lease_id,omitempty"`
}
func (m *LeaseReference) Reset() { *m = LeaseReference{} }
func (m *LeaseReference) String() string { return proto.CompactTextString(m) }
func (*LeaseReference) ProtoMessage() {}
func (*LeaseReference) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
func (m *LeaseReference) GetLeaseId() string {
if m != nil {
return m.LeaseId
}
return ""
}
// A booking for an inventory slot
type Booking struct {
// ID of this booking
BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId" json:"booking_id,omitempty"`
// The appointment slot of this booking
Slot *Slot `protobuf:"bytes,2,opt,name=slot" json:"slot,omitempty"`
// Personal information of the user making the appointment
UserInformation *UserInformation `protobuf:"bytes,3,opt,name=user_information,json=userInformation" json:"user_information,omitempty"`
// Status of the booking
Status BookingStatus `protobuf:"varint,4,opt,name=status,enum=ext.maps.booking.partner.v2.BookingStatus" json:"status,omitempty"`
// Information about payment transactions that relate to the booking.
PaymentInformation *PaymentInformation `protobuf:"bytes,5,opt,name=payment_information,json=paymentInformation" json:"payment_information,omitempty"`
}
func (m *Booking) Reset() { *m = Booking{} }
func (m *Booking) String() string { return proto.CompactTextString(m) }
func (*Booking) ProtoMessage() {}
func (*Booking) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
func (m *Booking) GetBookingId() string {
if m != nil {
return m.BookingId
}
return ""
}
func (m *Booking) GetSlot() *Slot {
if m != nil {
return m.Slot
}
return nil
}
func (m *Booking) GetUserInformation() *UserInformation {
if m != nil {
return m.UserInformation
}
return nil
}
func (m *Booking) GetStatus() BookingStatus {
if m != nil {
return m.Status
}
return BookingStatus_BOOKING_STATUS_UNSPECIFIED
}
func (m *Booking) GetPaymentInformation() *PaymentInformation {
if m != nil {
return m.PaymentInformation
}
return nil
}
// Personal information about the person making a booking
type UserInformation struct {
// Unique ID of the user to the partner, chosen by Reserve with Google.
UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId" json:"user_id,omitempty"`
// Given name of the user
GivenName string `protobuf:"bytes,2,opt,name=given_name,json=givenName" json:"given_name,omitempty"`
// Family name of the user
FamilyName string `protobuf:"bytes,3,opt,name=family_name,json=familyName" json:"family_name,omitempty"`
// Address of the user (optional)
Address *PostalAddress `protobuf:"bytes,4,opt,name=address" json:"address,omitempty"`
// Phone number of the user (optional)
Telephone string `protobuf:"bytes,5,opt,name=telephone" json:"telephone,omitempty"`
// Email address of the user
Email string `protobuf:"bytes,6,opt,name=email" json:"email,omitempty"`
}
func (m *UserInformation) Reset() { *m = UserInformation{} }
func (m *UserInformation) String() string { return proto.CompactTextString(m) }
func (*UserInformation) ProtoMessage() {}
func (*UserInformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
func (m *UserInformation) GetUserId() string {
if m != nil {
return m.UserId
}
return ""
}
func (m *UserInformation) GetGivenName() string {
if m != nil {
return m.GivenName
}
return ""
}
func (m *UserInformation) GetFamilyName() string {
if m != nil {
return m.FamilyName
}
return ""
}
func (m *UserInformation) GetAddress() *PostalAddress {
if m != nil {
return m.Address
}
return nil
}
func (m *UserInformation) GetTelephone() string {
if m != nil {
return m.Telephone
}
return ""
}
func (m *UserInformation) GetEmail() string {
if m != nil {
return m.Email
}
return ""
}
// Postal address for a user
type PostalAddress struct {
// The country, e.g. "USA".
AddressCountry string `protobuf:"bytes,1,opt,name=address_country,json=addressCountry" json:"address_country,omitempty"`
// The locality, e.g. "Mountain View".
AddressLocality string `protobuf:"bytes,2,opt,name=address_locality,json=addressLocality" json:"address_locality,omitempty"`
// The region, e.g. "CA".
AddressRegion string `protobuf:"bytes,3,opt,name=address_region,json=addressRegion" json:"address_region,omitempty"`
// The post office box number, e.g. "3112", optional.
PostOfficeBoxNumber string `protobuf:"bytes,4,opt,name=post_office_box_number,json=postOfficeBoxNumber" json:"post_office_box_number,omitempty"`
// The postal code, e.g. "94043".
PostalCode string `protobuf:"bytes,5,opt,name=postal_code,json=postalCode" json:"postal_code,omitempty"`
// The street address, e.g. "1600 Amphitheatre Pkwy".
StreetAddress string `protobuf:"bytes,6,opt,name=street_address,json=streetAddress" json:"street_address,omitempty"`
}
func (m *PostalAddress) Reset() { *m = PostalAddress{} }
func (m *PostalAddress) String() string { return proto.CompactTextString(m) }
func (*PostalAddress) ProtoMessage() {}
func (*PostalAddress) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
func (m *PostalAddress) GetAddressCountry() string {
if m != nil {
return m.AddressCountry
}
return ""
}
func (m *PostalAddress) GetAddressLocality() string {
if m != nil {
return m.AddressLocality
}
return ""
}
func (m *PostalAddress) GetAddressRegion() string {
if m != nil {
return m.AddressRegion
}
return ""
}
func (m *PostalAddress) GetPostOfficeBoxNumber() string {
if m != nil {
return m.PostOfficeBoxNumber
}
return ""
}
func (m *PostalAddress) GetPostalCode() string {
if m != nil {
return m.PostalCode
}
return ""
}
func (m *PostalAddress) GetStreetAddress() string {
if m != nil {
return m.StreetAddress
}
return ""
}
// Parameters to specify how the partner will process payment for a given
// booking.
//
// A sample request:
// processor: PROCESSOR_STRIPE
// payment_method_token: "pk_live_12345abcdef"
// version: "2017-06-15"
type PaymentProcessingParameters struct {
Processor PaymentProcessingParameters_PaymentProcessor `protobuf:"varint,1,opt,name=processor,enum=ext.maps.booking.partner.v2.PaymentProcessingParameters_PaymentProcessor" json:"processor,omitempty"`
// The token representing the payment method that will be used to pay
// for this booking. This token can be only used once. This token can be
// only used for the merchant associated with this booking.
//
// Each processor may choose its own format for this field.
// Stripe uses "pk_live_1234abc..." for live keys and "pk_test_1234abc..."
// for test keys.
PaymentMethodToken string `protobuf:"bytes,2,opt,name=payment_method_token,json=paymentMethodToken" json:"payment_method_token,omitempty"`
// The payment processor API version that the given payment token is valid
// for.
//
// Each processor may choose its own format for this field.
// Stripe uses a date (e.g. "2017-06-15").
Version string `protobuf:"bytes,3,opt,name=version" json:"version,omitempty"`
}
func (m *PaymentProcessingParameters) Reset() { *m = PaymentProcessingParameters{} }
func (m *PaymentProcessingParameters) String() string { return proto.CompactTextString(m) }
func (*PaymentProcessingParameters) ProtoMessage() {}
func (*PaymentProcessingParameters) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
func (m *PaymentProcessingParameters) GetProcessor() PaymentProcessingParameters_PaymentProcessor {
if m != nil {
return m.Processor
}
return PaymentProcessingParameters_PAYMENT_PROCESSOR_UNSPECIFIED
}
func (m *PaymentProcessingParameters) GetPaymentMethodToken() string {
if m != nil {
return m.PaymentMethodToken
}
return ""
}
func (m *PaymentProcessingParameters) GetVersion() string {
if m != nil {
return m.Version
}
return ""
}
type Price struct {
// The price in micro-units of the currency.
// Fractions of smallest currency unit will be rounded using nearest even
// rounding. (e.g. For USD 2.5 cents rounded to 2 cents, 3.5 cents rounded to
// 4 cents, 0.5 cents rounded to 0 cents, 2.51 cents rounded to 3 cents).
PriceMicros int64 `protobuf:"varint,1,opt,name=price_micros,json=priceMicros" json:"price_micros,omitempty"`
// The currency of the price that is defined in ISO 4217.
CurrencyCode string `protobuf:"bytes,2,opt,name=currency_code,json=currencyCode" json:"currency_code,omitempty"`
}
func (m *Price) Reset() { *m = Price{} }
func (m *Price) String() string { return proto.CompactTextString(m) }
func (*Price) ProtoMessage() {}
func (*Price) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (m *Price) GetPriceMicros() int64 {
if m != nil {
return m.PriceMicros
}
return 0
}
func (m *Price) GetCurrencyCode() string {
if m != nil {
return m.CurrencyCode
}
return ""
}
// This describes a payment option, such as a pack, membership, or
// single-session pass after it has been purchased by a user. It includes an
// identifier for the user payment option, as well as some information about
// the payment option with which it is associated.
type UserPaymentOption struct {
// A unique identifier for the user payment option. This Id MUST be unique
// for all UserPaymentOptions across all merchants and users.
UserPaymentOptionId string `protobuf:"bytes,1,opt,name=user_payment_option_id,json=userPaymentOptionId" json:"user_payment_option_id,omitempty"`
// The user payment option will be valid (usable) between start_time and
// end_time. Attempts to use a user payment option to make a booking outside
// of this interval will fail.
ValidStartTime *google_protobuf2.Timestamp `protobuf:"bytes,2,opt,name=valid_start_time,json=validStartTime" json:"valid_start_time,omitempty"`
ValidEndTime *google_protobuf2.Timestamp `protobuf:"bytes,3,opt,name=valid_end_time,json=validEndTime" json:"valid_end_time,omitempty"`
// The type of the payment option associated with this user payment option.
// This can be unlimited for a membership or subscription, multi-use for a
// pack, or single-use.
Type PaymentOptionType `protobuf:"varint,4,opt,name=type,enum=ext.maps.booking.partner.v2.PaymentOptionType" json:"type,omitempty"`
// The original number of uses for this user payment option when it was
// purchased. This value is ignored for unlimited payment options.
OriginalCount int32 `protobuf:"varint,5,opt,name=original_count,json=originalCount" json:"original_count,omitempty"`
// The number of uses remaining for this user payment option. If this number
// is 0 for a pack, attempts to use this payment option to make a booking will
// fail.
CurrentCount int32 `protobuf:"varint,6,opt,name=current_count,json=currentCount" json:"current_count,omitempty"`
// The id of the payment option that has been used to purchase this user
// payment option.
PaymentOptionId string `protobuf:"bytes,7,opt,name=payment_option_id,json=paymentOptionId" json:"payment_option_id,omitempty"`
}
func (m *UserPaymentOption) Reset() { *m = UserPaymentOption{} }
func (m *UserPaymentOption) String() string { return proto.CompactTextString(m) }
func (*UserPaymentOption) ProtoMessage() {}
func (*UserPaymentOption) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
func (m *UserPaymentOption) GetUserPaymentOptionId() string {
if m != nil {
return m.UserPaymentOptionId
}
return ""
}
func (m *UserPaymentOption) GetValidStartTime() *google_protobuf2.Timestamp {
if m != nil {
return m.ValidStartTime
}
return nil
}
func (m *UserPaymentOption) GetValidEndTime() *google_protobuf2.Timestamp {
if m != nil {
return m.ValidEndTime
}
return nil
}
func (m *UserPaymentOption) GetType() PaymentOptionType {
if m != nil {
return m.Type
}
return PaymentOptionType_PAYMENT_OPTION_TYPE_UNSPECIFIED
}
func (m *UserPaymentOption) GetOriginalCount() int32 {
if m != nil {
return m.OriginalCount
}
return 0
}
func (m *UserPaymentOption) GetCurrentCount() int32 {
if m != nil {
return m.CurrentCount
}
return 0
}
func (m *UserPaymentOption) GetPaymentOptionId() string {
if m != nil {
return m.PaymentOptionId
}
return ""
}
// Payment details that are sent when creating a new booking.
type PaymentInformation struct {
// Prepayment status of the booking.
// If the prepayment_status is PREPAYMENT_PROVIDED, then
// payment_transaction_id contains the associated unique transaction id for
// the purchase.
// If the prepayment status is PREPAYMENT_REFUNDED, then
// payment_transaction_id contains the associated unique transaction id for
// the refund.
PrepaymentStatus PrepaymentStatus `protobuf:"varint,1,opt,name=prepayment_status,json=prepaymentStatus,enum=ext.maps.booking.partner.v2.PrepaymentStatus" json:"prepayment_status,omitempty"`
// Unique identifier for a payment transaction associated with the booking.
// Empty if not applicable.
PaymentTransactionId string `protobuf:"bytes,2,opt,name=payment_transaction_id,json=paymentTransactionId" json:"payment_transaction_id,omitempty"`
// These fields must match the service price (specified in the Services feed)
// or the PaymentOption corresponding with this service.
// They are included in the booking request and response to verify that
// the price indicated in the feed has not changed since the last feed
// update.
//
// The price of the booking, exclusive of any taxes.
// Existence of price or taxes does not imply that they have been paid,
// prepayment_state should be used for that purpose.
Price *Price `protobuf:"bytes,3,opt,name=price" json:"price,omitempty"`
// Taxes that are calculated to be paid for this booking.
// If this field is absent the price is assumed to be exempt from or already
// inclusive of applicable taxes.
TaxAmount *Price `protobuf:"bytes,4,opt,name=tax_amount,json=taxAmount" json:"tax_amount,omitempty"`
PaymentProcessedBy PaymentInformation_PaymentProcessedBy `protobuf:"varint,5,opt,name=payment_processed_by,json=paymentProcessedBy,enum=ext.maps.booking.partner.v2.PaymentInformation_PaymentProcessedBy" json:"payment_processed_by,omitempty"`
// The id of the payment option or user payment option associated with the
// booking.
// If a payment option is purchased as part of a booking, payment_option_id
// will be set with the id of that payment option.
// If an already purchased user payment option is being used to pay for a
// booking, user_payment_option_id will be set with the id of that user
// payment option.
// When included as part of a response proto, the user_payment_option_id
// should be set and must match the UserPaymentOption that is returned in the
// RPC response (e.g. the user_payment_option returned in
// CreateBookingResponse).
//
// Types that are valid to be assigned to PaymentId:
// *PaymentInformation_PaymentOptionId
// *PaymentInformation_UserPaymentOptionId
PaymentId isPaymentInformation_PaymentId `protobuf_oneof:"payment_id"`
}
func (m *PaymentInformation) Reset() { *m = PaymentInformation{} }
func (m *PaymentInformation) String() string { return proto.CompactTextString(m) }
func (*PaymentInformation) ProtoMessage() {}
func (*PaymentInformation) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
type isPaymentInformation_PaymentId interface {
isPaymentInformation_PaymentId()
}
type PaymentInformation_PaymentOptionId struct {
PaymentOptionId string `protobuf:"bytes,6,opt,name=payment_option_id,json=paymentOptionId,oneof"`
}
type PaymentInformation_UserPaymentOptionId struct {
UserPaymentOptionId string `protobuf:"bytes,7,opt,name=user_payment_option_id,json=userPaymentOptionId,oneof"`
}
func (*PaymentInformation_PaymentOptionId) isPaymentInformation_PaymentId() {}
func (*PaymentInformation_UserPaymentOptionId) isPaymentInformation_PaymentId() {}
func (m *PaymentInformation) GetPaymentId() isPaymentInformation_PaymentId {
if m != nil {
return m.PaymentId
}
return nil
}
func (m *PaymentInformation) GetPrepaymentStatus() PrepaymentStatus {
if m != nil {
return m.PrepaymentStatus
}
return PrepaymentStatus_PREPAYMENT_STATUS_UNSPECIFIED
}
func (m *PaymentInformation) GetPaymentTransactionId() string {
if m != nil {
return m.PaymentTransactionId
}
return ""
}
func (m *PaymentInformation) GetPrice() *Price {
if m != nil {
return m.Price
}
return nil
}
func (m *PaymentInformation) GetTaxAmount() *Price {
if m != nil {
return m.TaxAmount
}
return nil
}
func (m *PaymentInformation) GetPaymentProcessedBy() PaymentInformation_PaymentProcessedBy {
if m != nil {
return m.PaymentProcessedBy
}
return PaymentInformation_PAYMENT_PROCESSED_BY_UNSPECIFIED
}
func (m *PaymentInformation) GetPaymentOptionId() string {
if x, ok := m.GetPaymentId().(*PaymentInformation_PaymentOptionId); ok {
return x.PaymentOptionId
}
return ""
}
func (m *PaymentInformation) GetUserPaymentOptionId() string {
if x, ok := m.GetPaymentId().(*PaymentInformation_UserPaymentOptionId); ok {
return x.UserPaymentOptionId
}
return ""
}
// XXX_OneofFuncs is for the internal use of the proto package.
func (*PaymentInformation) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
return _PaymentInformation_OneofMarshaler, _PaymentInformation_OneofUnmarshaler, _PaymentInformation_OneofSizer, []interface{}{
(*PaymentInformation_PaymentOptionId)(nil),
(*PaymentInformation_UserPaymentOptionId)(nil),
}
}
func _PaymentInformation_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
m := msg.(*PaymentInformation)
// payment_id
switch x := m.PaymentId.(type) {
case *PaymentInformation_PaymentOptionId:
b.EncodeVarint(6<<3 | proto.WireBytes)
b.EncodeStringBytes(x.PaymentOptionId)
case *PaymentInformation_UserPaymentOptionId:
b.EncodeVarint(7<<3 | proto.WireBytes)
b.EncodeStringBytes(x.UserPaymentOptionId)
case nil:
default:
return fmt.Errorf("PaymentInformation.PaymentId has unexpected type %T", x)
}
return nil
}
func _PaymentInformation_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
m := msg.(*PaymentInformation)
switch tag {
case 6: // payment_id.payment_option_id
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeStringBytes()
m.PaymentId = &PaymentInformation_PaymentOptionId{x}
return true, err
case 7: // payment_id.user_payment_option_id
if wire != proto.WireBytes {
return true, proto.ErrInternalBadWireType
}
x, err := b.DecodeStringBytes()
m.PaymentId = &PaymentInformation_UserPaymentOptionId{x}
return true, err
default:
return false, nil
}
}
func _PaymentInformation_OneofSizer(msg proto.Message) (n int) {
m := msg.(*PaymentInformation)
// payment_id
switch x := m.PaymentId.(type) {
case *PaymentInformation_PaymentOptionId:
n += proto.SizeVarint(6<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(len(x.PaymentOptionId)))
n += len(x.PaymentOptionId)
case *PaymentInformation_UserPaymentOptionId:
n += proto.SizeVarint(7<<3 | proto.WireBytes)
n += proto.SizeVarint(uint64(len(x.UserPaymentOptionId)))
n += len(x.UserPaymentOptionId)
case nil:
default:
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
}
return n
}
// Status data that conveys why (1) creating a lease or (2) creating or updating
// a booking fails.
// BookingFailure is intended to primarily capture business logic errors.
type BookingFailure struct {
Cause BookingFailure_Cause `protobuf:"varint,1,opt,name=cause,enum=ext.maps.booking.partner.v2.BookingFailure_Cause" json:"cause,omitempty"`
RejectedCardType BookingFailure_CreditCardType `protobuf:"varint,2,opt,name=rejected_card_type,json=rejectedCardType,enum=ext.maps.booking.partner.v2.BookingFailure_CreditCardType" json:"rejected_card_type,omitempty"`
// This optional field is used for the partner to include additional
// information for debugging purpose only.
Description string `protobuf:"bytes,3,opt,name=description" json:"description,omitempty"`
}
func (m *BookingFailure) Reset() { *m = BookingFailure{} }
func (m *BookingFailure) String() string { return proto.CompactTextString(m) }
func (*BookingFailure) ProtoMessage() {}
func (*BookingFailure) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
func (m *BookingFailure) GetCause() BookingFailure_Cause {
if m != nil {
return m.Cause
}
return BookingFailure_CAUSE_UNSPECIFIED
}
func (m *BookingFailure) GetRejectedCardType() BookingFailure_CreditCardType {
if m != nil {
return m.RejectedCardType
}
return BookingFailure_CREDIT_CARD_TYPE_UNSPECIFIED
}
func (m *BookingFailure) GetDescription() string {
if m != nil {
return m.Description
}
return ""
}
// Resource specification that disambiguates an appointment slot
type Resources struct {
// The staff ID as provided in the feed or empty if not applicable or no staff
// was selected.
StaffId string `protobuf:"bytes,1,opt,name=staff_id,json=staffId" json:"staff_id,omitempty"`
// The room ID as provided in the feed or empty if not applicable or no room
// was selected.
RoomId string `protobuf:"bytes,2,opt,name=room_id,json=roomId" json:"room_id,omitempty"`
// For Dining Reservations only: the number of seats requested in the booking.
PartySize int32 `protobuf:"varint,3,opt,name=party_size,json=partySize" json:"party_size,omitempty"`
}
func (m *Resources) Reset() { *m = Resources{} }
func (m *Resources) String() string { return proto.CompactTextString(m) }
func (*Resources) ProtoMessage() {}
func (*Resources) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
func (m *Resources) GetStaffId() string {
if m != nil {
return m.StaffId
}
return ""
}
func (m *Resources) GetRoomId() string {
if m != nil {
return m.RoomId
}
return ""
}
func (m *Resources) GetPartySize() int32 {
if m != nil {
return m.PartySize
}
return 0
}
// Request to check availability for a [ext.maps.booking.partner.v2.Slot]
type CheckAvailabilityRequest struct {
// The appointment slot that is being checked
Slot *Slot `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"`
}
func (m *CheckAvailabilityRequest) Reset() { *m = CheckAvailabilityRequest{} }
func (m *CheckAvailabilityRequest) String() string { return proto.CompactTextString(m) }
func (*CheckAvailabilityRequest) ProtoMessage() {}
func (*CheckAvailabilityRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (m *CheckAvailabilityRequest) GetSlot() *Slot {
if m != nil {
return m.Slot
}
return nil
}
// Response for the [ext.maps.booking.partner.v2.CheckAvailability] RPC with the
// availability of the appointment slot
type CheckAvailabilityResponse struct {
// The requested slot.
Slot *Slot `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"`
// Number of available spots.
// 0 indicates that the appointment slot is not available.
CountAvailable int32 `protobuf:"varint,2,opt,name=count_available,json=countAvailable" json:"count_available,omitempty"`
// Optionally, return the requirement to show the slots duration and/or
// endtime. This field will be ignored if slot is unavailable.
DurationRequirement CheckAvailabilityResponse_DurationRequirement `protobuf:"varint,3,opt,name=duration_requirement,json=durationRequirement,enum=ext.maps.booking.partner.v2.CheckAvailabilityResponse_DurationRequirement" json:"duration_requirement,omitempty"`
}
func (m *CheckAvailabilityResponse) Reset() { *m = CheckAvailabilityResponse{} }
func (m *CheckAvailabilityResponse) String() string { return proto.CompactTextString(m) }
func (*CheckAvailabilityResponse) ProtoMessage() {}
func (*CheckAvailabilityResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
func (m *CheckAvailabilityResponse) GetSlot() *Slot {
if m != nil {
return m.Slot
}
return nil
}
func (m *CheckAvailabilityResponse) GetCountAvailable() int32 {
if m != nil {
return m.CountAvailable
}
return 0
}
func (m *CheckAvailabilityResponse) GetDurationRequirement() CheckAvailabilityResponse_DurationRequirement {
if m != nil {
return m.DurationRequirement
}
return CheckAvailabilityResponse_DURATION_REQUIREMENT_UNSPECIFIED
}
// Request to create a [ext.maps.booking.partner.v2.Lease] for a slot in the
// inventory. The expiration time in the returned Lease may be modified by the
// backend, e.g. if the requested lease period is too long.
type CreateLeaseRequest struct {
// The lease to be created with information about the appointment slot
Lease *Lease `protobuf:"bytes,1,opt,name=lease" json:"lease,omitempty"`
}
func (m *CreateLeaseRequest) Reset() { *m = CreateLeaseRequest{} }
func (m *CreateLeaseRequest) String() string { return proto.CompactTextString(m) }
func (*CreateLeaseRequest) ProtoMessage() {}
func (*CreateLeaseRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (m *CreateLeaseRequest) GetLease() *Lease {
if m != nil {
return m.Lease
}
return nil
}
// Response for the [ext.maps.booking.partner.v2.CreateLease] RPC with the
// created [ext.maps.booking.partner.v2.Lease]
type CreateLeaseResponse struct {
// The created [ext.maps.booking.partner.v2.Lease]
Lease *Lease `protobuf:"bytes,1,opt,name=lease" json:"lease,omitempty"`
// If creating a lease fails, this field should reflect the business logic
// error (e.g., slot has become unavailable) and lease field is expected to be
// unset.
BookingFailure *BookingFailure `protobuf:"bytes,2,opt,name=booking_failure,json=bookingFailure" json:"booking_failure,omitempty"`
}
func (m *CreateLeaseResponse) Reset() { *m = CreateLeaseResponse{} }
func (m *CreateLeaseResponse) String() string { return proto.CompactTextString(m) }
func (*CreateLeaseResponse) ProtoMessage() {}
func (*CreateLeaseResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
func (m *CreateLeaseResponse) GetLease() *Lease {
if m != nil {
return m.Lease
}
return nil
}
func (m *CreateLeaseResponse) GetBookingFailure() *BookingFailure {
if m != nil {
return m.BookingFailure
}
return nil
}
// Request to create a [ext.maps.booking.partner.v2.Booking] for an inventory
// slot. Consumes the lease if provided.
type CreateBookingRequest struct {
// The inventory slot that is being requested to make this booking.
// If lease_ref is provided, slot must match the lease; slot is provided for
// the partner to verify the lease information.
// If lease_ref is absent, then create the booking for the slot.
Slot *Slot `protobuf:"bytes,1,opt,name=slot" json:"slot,omitempty"`
// The lease that is being confirmed to make this booking.
// If lease_ref is provided, then create the booking using the lease.
LeaseRef *LeaseReference `protobuf:"bytes,2,opt,name=lease_ref,json=leaseRef" json:"lease_ref,omitempty"`
// Personal information of the user making the appointment
UserInformation *UserInformation `protobuf:"bytes,3,opt,name=user_information,json=userInformation" json:"user_information,omitempty"`
// Information about payments. When payment authorizations are handled by
// Google, if the booking request does not succeed, payment authorizations are
// automatically canceled.
PaymentInformation *PaymentInformation `protobuf:"bytes,4,opt,name=payment_information,json=paymentInformation" json:"payment_information,omitempty"`
// The parameters to be used if the payment is processed by the partner
// (i.e. payment_information.payment_processed_by is equal to
// PROCESSED_BY_PARTNER).
PaymentProcessingParameters *PaymentProcessingParameters `protobuf:"bytes,5,opt,name=payment_processing_parameters,json=paymentProcessingParameters" json:"payment_processing_parameters,omitempty"`
// Idempotency token for [ext.maps.booking.partner.v2.CreateBooking] requests.
IdempotencyToken string `protobuf:"bytes,6,opt,name=idempotency_token,json=idempotencyToken" json:"idempotency_token,omitempty"`
}
func (m *CreateBookingRequest) Reset() { *m = CreateBookingRequest{} }
func (m *CreateBookingRequest) String() string { return proto.CompactTextString(m) }
func (*CreateBookingRequest) ProtoMessage() {}
func (*CreateBookingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
func (m *CreateBookingRequest) GetSlot() *Slot {
if m != nil {
return m.Slot
}
return nil
}
func (m *CreateBookingRequest) GetLeaseRef() *LeaseReference {
if m != nil {
return m.LeaseRef
}
return nil
}
func (m *CreateBookingRequest) GetUserInformation() *UserInformation {
if m != nil {
return m.UserInformation
}
return nil
}
func (m *CreateBookingRequest) GetPaymentInformation() *PaymentInformation {
if m != nil {
return m.PaymentInformation
}
return nil
}
func (m *CreateBookingRequest) GetPaymentProcessingParameters() *PaymentProcessingParameters {
if m != nil {
return m.PaymentProcessingParameters
}
return nil
}
func (m *CreateBookingRequest) GetIdempotencyToken() string {
if m != nil {
return m.IdempotencyToken
}
return ""
}
// Response with the created [ext.maps.booking.partner.v2.Booking] for an
// inventory slot
type CreateBookingResponse struct {
// The created booking
Booking *Booking `protobuf:"bytes,1,opt,name=booking" json:"booking,omitempty"`
// The updated user payment option used in this booking.
// If a new payment option was purchased to pay for the booking, this should
// be a newly created user payment option.
// If an already purchased user payment option was used for this booking,
// this should reflect an updated version of that user payment option.
UserPaymentOption *UserPaymentOption `protobuf:"bytes,2,opt,name=user_payment_option,json=userPaymentOption" json:"user_payment_option,omitempty"`
// If creating a booking fails, this field should reflect the business logic
// error (e.g., slot has become unavailable) and all other fields in the
// CreateBookingResponse message are expected to be unset.
BookingFailure *BookingFailure `protobuf:"bytes,3,opt,name=booking_failure,json=bookingFailure" json:"booking_failure,omitempty"`
}
func (m *CreateBookingResponse) Reset() { *m = CreateBookingResponse{} }
func (m *CreateBookingResponse) String() string { return proto.CompactTextString(m) }
func (*CreateBookingResponse) ProtoMessage() {}
func (*CreateBookingResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
func (m *CreateBookingResponse) GetBooking() *Booking {
if m != nil {
return m.Booking
}
return nil
}
func (m *CreateBookingResponse) GetUserPaymentOption() *UserPaymentOption {
if m != nil {
return m.UserPaymentOption
}
return nil
}
func (m *CreateBookingResponse) GetBookingFailure() *BookingFailure {
if m != nil {
return m.BookingFailure
}
return nil
}
// Request to update a [ext.maps.booking.partner.v2.Booking]
type UpdateBookingRequest struct {
// Field mask of all booking fields to be updated
UpdateMask *google_protobuf1.FieldMask `protobuf:"bytes,1,opt,name=update_mask,json=updateMask" json:"update_mask,omitempty"`
// The booking to be updated
// The following fields can be set in a booking:
// - status, to cancel a booking.
// - start_time and duration in the slot, to reschedule a booking.
Booking *Booking `protobuf:"bytes,2,opt,name=booking" json:"booking,omitempty"`
}
func (m *UpdateBookingRequest) Reset() { *m = UpdateBookingRequest{} }
func (m *UpdateBookingRequest) String() string { return proto.CompactTextString(m) }
func (*UpdateBookingRequest) ProtoMessage() {}
func (*UpdateBookingRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
func (m *UpdateBookingRequest) GetUpdateMask() *google_protobuf1.FieldMask {
if m != nil {
return m.UpdateMask
}
return nil
}
func (m *UpdateBookingRequest) GetBooking() *Booking {
if m != nil {
return m.Booking
}
return nil
}
// Response with the updated [ext.maps.booking.partner.v2.Booking]
type UpdateBookingResponse struct {
// The updated booking
Booking *Booking `protobuf:"bytes,1,opt,name=booking" json:"booking,omitempty"`
// The updated user payment option originally used to pay for this booking.
// This should be set if the UpdateBookingRequest results in a change to
// the UserPaymentOption.
// For instance, if the booking is canceled, the UserPaymentOption should
// reflect an additional credit to the user. In the case of a multi-use
// payment option, the current_count should be increased by one to
// allow the user to create another booking with this payment option. In the
// case of a single-use payment option, a new single-use user payment option
// should be returned.
UserPaymentOption *UserPaymentOption `protobuf:"bytes,2,opt,name=user_payment_option,json=userPaymentOption" json:"user_payment_option,omitempty"`
// If updating a booking fails, this field should reflect the business logic
// error (e.g., booking is not cancellable)
BookingFailure *BookingFailure `protobuf:"bytes,3,opt,name=booking_failure,json=bookingFailure" json:"booking_failure,omitempty"`
}
func (m *UpdateBookingResponse) Reset() { *m = UpdateBookingResponse{} }
func (m *UpdateBookingResponse) String() string { return proto.CompactTextString(m) }
func (*UpdateBookingResponse) ProtoMessage() {}
func (*UpdateBookingResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
func (m *UpdateBookingResponse) GetBooking() *Booking {
if m != nil {
return m.Booking
}
return nil
}
func (m *UpdateBookingResponse) GetUserPaymentOption() *UserPaymentOption {
if m != nil {
return m.UserPaymentOption
}
return nil
}
func (m *UpdateBookingResponse) GetBookingFailure() *BookingFailure {
if m != nil {
return m.BookingFailure
}
return nil
}
// Request to get booking status and prepayment status for a
// [ext.maps.booking.partner.v2.Booking]
type GetBookingStatusRequest struct {
// ID of the existing booking
BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId" json:"booking_id,omitempty"`
}
func (m *GetBookingStatusRequest) Reset() { *m = GetBookingStatusRequest{} }
func (m *GetBookingStatusRequest) String() string { return proto.CompactTextString(m) }
func (*GetBookingStatusRequest) ProtoMessage() {}
func (*GetBookingStatusRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
func (m *GetBookingStatusRequest) GetBookingId() string {
if m != nil {
return m.BookingId
}
return ""
}
// Response for the [ext.maps.booking.partner.v2.GetBookingStatus] RPC with
// booking status and prepayment status
type GetBookingStatusResponse struct {
// ID of the booking
BookingId string `protobuf:"bytes,1,opt,name=booking_id,json=bookingId" json:"booking_id,omitempty"`
// Status of the booking
BookingStatus BookingStatus `protobuf:"varint,2,opt,name=booking_status,json=bookingStatus,enum=ext.maps.booking.partner.v2.BookingStatus" json:"booking_status,omitempty"`
// Prepayment status of the booking
PrepaymentStatus PrepaymentStatus `protobuf:"varint,3,opt,name=prepayment_status,json=prepaymentStatus,enum=ext.maps.booking.partner.v2.PrepaymentStatus" json:"prepayment_status,omitempty"`
}
func (m *GetBookingStatusResponse) Reset() { *m = GetBookingStatusResponse{} }
func (m *GetBookingStatusResponse) String() string { return proto.CompactTextString(m) }
func (*GetBookingStatusResponse) ProtoMessage() {}
func (*GetBookingStatusResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
func (m *GetBookingStatusResponse) GetBookingId() string {
if m != nil {
return m.BookingId
}
return ""
}
func (m *GetBookingStatusResponse) GetBookingStatus() BookingStatus {
if m != nil {
return m.BookingStatus
}
return BookingStatus_BOOKING_STATUS_UNSPECIFIED
}
func (m *GetBookingStatusResponse) GetPrepaymentStatus() PrepaymentStatus {
if m != nil {
return m.PrepaymentStatus
}
return PrepaymentStatus_PREPAYMENT_STATUS_UNSPECIFIED
}
// Request to list all bookings for a user
type ListBookingsRequest struct {
// ID of the user
UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId" json:"user_id,omitempty"`
}
func (m *ListBookingsRequest) Reset() { *m = ListBookingsRequest{} }
func (m *ListBookingsRequest) String() string { return proto.CompactTextString(m) }
func (*ListBookingsRequest) ProtoMessage() {}
func (*ListBookingsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
func (m *ListBookingsRequest) GetUserId() string {
if m != nil {
return m.UserId
}
return ""
}
// Response for the [ext.maps.booking.partner.v2.ListBookings] RPC with all
// bookings for the requested user
type ListBookingsResponse struct {
// All bookings of the user
Bookings []*Booking `protobuf:"bytes,1,rep,name=bookings" json:"bookings,omitempty"`
}
func (m *ListBookingsResponse) Reset() { *m = ListBookingsResponse{} }
func (m *ListBookingsResponse) String() string { return proto.CompactTextString(m) }
func (*ListBookingsResponse) ProtoMessage() {}
func (*ListBookingsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
func (m *ListBookingsResponse) GetBookings() []*Booking {
if m != nil {
return m.Bookings
}
return nil
}
func init() {
proto.RegisterType((*Slot)(nil), "ext.maps.booking.partner.v2.Slot")
proto.RegisterType((*Lease)(nil), "ext.maps.booking.partner.v2.Lease")
proto.RegisterType((*LeaseReference)(nil), "ext.maps.booking.partner.v2.LeaseReference")
proto.RegisterType((*Booking)(nil), "ext.maps.booking.partner.v2.Booking")
proto.RegisterType((*UserInformation)(nil), "ext.maps.booking.partner.v2.UserInformation")
proto.RegisterType((*PostalAddress)(nil), "ext.maps.booking.partner.v2.PostalAddress")
proto.RegisterType((*PaymentProcessingParameters)(nil), "ext.maps.booking.partner.v2.PaymentProcessingParameters")
proto.RegisterType((*Price)(nil), "ext.maps.booking.partner.v2.Price")
proto.RegisterType((*UserPaymentOption)(nil), "ext.maps.booking.partner.v2.UserPaymentOption")
proto.RegisterType((*PaymentInformation)(nil), "ext.maps.booking.partner.v2.PaymentInformation")
proto.RegisterType((*BookingFailure)(nil), "ext.maps.booking.partner.v2.BookingFailure")
proto.RegisterType((*Resources)(nil), "ext.maps.booking.partner.v2.Resources")
proto.RegisterType((*CheckAvailabilityRequest)(nil), "ext.maps.booking.partner.v2.CheckAvailabilityRequest")
proto.RegisterType((*CheckAvailabilityResponse)(nil), "ext.maps.booking.partner.v2.CheckAvailabilityResponse")
proto.RegisterType((*CreateLeaseRequest)(nil), "ext.maps.booking.partner.v2.CreateLeaseRequest")
proto.RegisterType((*CreateLeaseResponse)(nil), "ext.maps.booking.partner.v2.CreateLeaseResponse")
proto.RegisterType((*CreateBookingRequest)(nil), "ext.maps.booking.partner.v2.CreateBookingRequest")
proto.RegisterType((*CreateBookingResponse)(nil), "ext.maps.booking.partner.v2.CreateBookingResponse")
proto.RegisterType((*UpdateBookingRequest)(nil), "ext.maps.booking.partner.v2.UpdateBookingRequest")
proto.RegisterType((*UpdateBookingResponse)(nil), "ext.maps.booking.partner.v2.UpdateBookingResponse")
proto.RegisterType((*GetBookingStatusRequest)(nil), "ext.maps.booking.partner.v2.GetBookingStatusRequest")
proto.RegisterType((*GetBookingStatusResponse)(nil), "ext.maps.booking.partner.v2.GetBookingStatusResponse")
proto.RegisterType((*ListBookingsRequest)(nil), "ext.maps.booking.partner.v2.ListBookingsRequest")
proto.RegisterType((*ListBookingsResponse)(nil), "ext.maps.booking.partner.v2.ListBookingsResponse")
proto.RegisterEnum("ext.maps.booking.partner.v2.PaymentOptionType", PaymentOptionType_name, PaymentOptionType_value)
proto.RegisterEnum("ext.maps.booking.partner.v2.BookingStatus", BookingStatus_name, BookingStatus_value)
proto.RegisterEnum("ext.maps.booking.partner.v2.PrepaymentStatus", PrepaymentStatus_name, PrepaymentStatus_value)
proto.RegisterEnum("ext.maps.booking.partner.v2.PaymentProcessingParameters_PaymentProcessor", PaymentProcessingParameters_PaymentProcessor_name, PaymentProcessingParameters_PaymentProcessor_value)
proto.RegisterEnum("ext.maps.booking.partner.v2.PaymentInformation_PaymentProcessedBy", PaymentInformation_PaymentProcessedBy_name, PaymentInformation_PaymentProcessedBy_value)
proto.RegisterEnum("ext.maps.booking.partner.v2.BookingFailure_Cause", BookingFailure_Cause_name, BookingFailure_Cause_value)
proto.RegisterEnum("ext.maps.booking.partner.v2.BookingFailure_CreditCardType", BookingFailure_CreditCardType_name, BookingFailure_CreditCardType_value)
proto.RegisterEnum("ext.maps.booking.partner.v2.CheckAvailabilityResponse_DurationRequirement", CheckAvailabilityResponse_DurationRequirement_name, CheckAvailabilityResponse_DurationRequirement_value)
}
// Reference imports to suppress errors if they are not otherwise used.
var _ context.Context
var _ grpc.ClientConn
// This is a compile-time assertion to ensure that this generated file
// is compatible with the grpc package it is being compiled against.
const _ = grpc.SupportPackageIsVersion4
// Client API for BookingService service
type BookingServiceClient interface {
// Gets availability information for an appointment slot
CheckAvailability(ctx context.Context, in *CheckAvailabilityRequest, opts ...grpc.CallOption) (*CheckAvailabilityResponse, error)
// Creates a new lease
CreateLease(ctx context.Context, in *CreateLeaseRequest, opts ...grpc.CallOption) (*CreateLeaseResponse, error)
// Creates a booking
CreateBooking(ctx context.Context, in *CreateBookingRequest, opts ...grpc.CallOption) (*CreateBookingResponse, error)
// Updates an existing booking
UpdateBooking(ctx context.Context, in *UpdateBookingRequest, opts ...grpc.CallOption) (*UpdateBookingResponse, error)
// Gets status for an existing booking
GetBookingStatus(ctx context.Context, in *GetBookingStatusRequest, opts ...grpc.CallOption) (*GetBookingStatusResponse, error)
// Lists all bookings for a user
ListBookings(ctx context.Context, in *ListBookingsRequest, opts ...grpc.CallOption) (*ListBookingsResponse, error)
}
type bookingServiceClient struct {
cc *grpc.ClientConn
}
func NewBookingServiceClient(cc *grpc.ClientConn) BookingServiceClient {
return &bookingServiceClient{cc}
}
func (c *bookingServiceClient) CheckAvailability(ctx context.Context, in *CheckAvailabilityRequest, opts ...grpc.CallOption) (*CheckAvailabilityResponse, error) {
out := new(CheckAvailabilityResponse)
err := grpc.Invoke(ctx, "/ext.maps.booking.partner.v2.BookingService/CheckAvailability", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *bookingServiceClient) CreateLease(ctx context.Context, in *CreateLeaseRequest, opts ...grpc.CallOption) (*CreateLeaseResponse, error) {
out := new(CreateLeaseResponse)
err := grpc.Invoke(ctx, "/ext.maps.booking.partner.v2.BookingService/CreateLease", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *bookingServiceClient) CreateBooking(ctx context.Context, in *CreateBookingRequest, opts ...grpc.CallOption) (*CreateBookingResponse, error) {
out := new(CreateBookingResponse)
err := grpc.Invoke(ctx, "/ext.maps.booking.partner.v2.BookingService/CreateBooking", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *bookingServiceClient) UpdateBooking(ctx context.Context, in *UpdateBookingRequest, opts ...grpc.CallOption) (*UpdateBookingResponse, error) {
out := new(UpdateBookingResponse)
err := grpc.Invoke(ctx, "/ext.maps.booking.partner.v2.BookingService/UpdateBooking", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *bookingServiceClient) GetBookingStatus(ctx context.Context, in *GetBookingStatusRequest, opts ...grpc.CallOption) (*GetBookingStatusResponse, error) {
out := new(GetBookingStatusResponse)
err := grpc.Invoke(ctx, "/ext.maps.booking.partner.v2.BookingService/GetBookingStatus", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
func (c *bookingServiceClient) ListBookings(ctx context.Context, in *ListBookingsRequest, opts ...grpc.CallOption) (*ListBookingsResponse, error) {
out := new(ListBookingsResponse)
err := grpc.Invoke(ctx, "/ext.maps.booking.partner.v2.BookingService/ListBookings", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
// Server API for BookingService service
type BookingServiceServer interface {
// Gets availability information for an appointment slot
CheckAvailability(context.Context, *CheckAvailabilityRequest) (*CheckAvailabilityResponse, error)
// Creates a new lease
CreateLease(context.Context, *CreateLeaseRequest) (*CreateLeaseResponse, error)
// Creates a booking
CreateBooking(context.Context, *CreateBookingRequest) (*CreateBookingResponse, error)
// Updates an existing booking
UpdateBooking(context.Context, *UpdateBookingRequest) (*UpdateBookingResponse, error)
// Gets status for an existing booking
GetBookingStatus(context.Context, *GetBookingStatusRequest) (*GetBookingStatusResponse, error)
// Lists all bookings for a user
ListBookings(context.Context, *ListBookingsRequest) (*ListBookingsResponse, error)
}
func RegisterBookingServiceServer(s *grpc.Server, srv BookingServiceServer) {
s.RegisterService(&_BookingService_serviceDesc, srv)
}
func _BookingService_CheckAvailability_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CheckAvailabilityRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(BookingServiceServer).CheckAvailability(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/ext.maps.booking.partner.v2.BookingService/CheckAvailability",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(BookingServiceServer).CheckAvailability(ctx, req.(*CheckAvailabilityRequest))
}
return interceptor(ctx, in, info, handler)
}
func _BookingService_CreateLease_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateLeaseRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(BookingServiceServer).CreateLease(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/ext.maps.booking.partner.v2.BookingService/CreateLease",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(BookingServiceServer).CreateLease(ctx, req.(*CreateLeaseRequest))
}
return interceptor(ctx, in, info, handler)
}
func _BookingService_CreateBooking_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(CreateBookingRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(BookingServiceServer).CreateBooking(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/ext.maps.booking.partner.v2.BookingService/CreateBooking",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(BookingServiceServer).CreateBooking(ctx, req.(*CreateBookingRequest))
}
return interceptor(ctx, in, info, handler)
}
func _BookingService_UpdateBooking_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(UpdateBookingRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(BookingServiceServer).UpdateBooking(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/ext.maps.booking.partner.v2.BookingService/UpdateBooking",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(BookingServiceServer).UpdateBooking(ctx, req.(*UpdateBookingRequest))
}
return interceptor(ctx, in, info, handler)
}
func _BookingService_GetBookingStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(GetBookingStatusRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(BookingServiceServer).GetBookingStatus(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/ext.maps.booking.partner.v2.BookingService/GetBookingStatus",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(BookingServiceServer).GetBookingStatus(ctx, req.(*GetBookingStatusRequest))
}
return interceptor(ctx, in, info, handler)
}
func _BookingService_ListBookings_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ListBookingsRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
return srv.(BookingServiceServer).ListBookings(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
FullMethod: "/ext.maps.booking.partner.v2.BookingService/ListBookings",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(BookingServiceServer).ListBookings(ctx, req.(*ListBookingsRequest))
}
return interceptor(ctx, in, info, handler)
}
var _BookingService_serviceDesc = grpc.ServiceDesc{
ServiceName: "ext.maps.booking.partner.v2.BookingService",
HandlerType: (*BookingServiceServer)(nil),
Methods: []grpc.MethodDesc{
{
MethodName: "CheckAvailability",
Handler: _BookingService_CheckAvailability_Handler,
},
{
MethodName: "CreateLease",
Handler: _BookingService_CreateLease_Handler,
},
{
MethodName: "CreateBooking",
Handler: _BookingService_CreateBooking_Handler,
},
{
MethodName: "UpdateBooking",
Handler: _BookingService_UpdateBooking_Handler,
},
{
MethodName: "GetBookingStatus",
Handler: _BookingService_GetBookingStatus_Handler,
},
{
MethodName: "ListBookings",
Handler: _BookingService_ListBookings_Handler,
},
},
Streams: []grpc.StreamDesc{},
Metadata: "booking_service.proto",
}
func init() { proto.RegisterFile("booking_service.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
// 2368 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x19, 0x4b, 0x6f, 0x1b, 0xc7,
0xd9, 0xa4, 0x48, 0x49, 0xfc, 0x24, 0xd1, 0xab, 0x91, 0x1c, 0xd3, 0x52, 0x1c, 0xcb, 0x9b, 0xb4,
0x4d, 0xed, 0x94, 0x8e, 0x95, 0xb8, 0x70, 0x5b, 0xa0, 0xc8, 0x92, 0x3b, 0x96, 0xd7, 0x25, 0x97,
0xf4, 0xec, 0xd2, 0x8e, 0x73, 0xc8, 0x76, 0xc5, 0x1d, 0xca, 0x5b, 0x93, 0xdc, 0xcd, 0xee, 0x52,
0x90, 0x82, 0xf6, 0x50, 0xa0, 0x40, 0x2f, 0xed, 0x29, 0x87, 0x9e, 0x7a, 0xec, 0xb9, 0xd7, 0x02,
0xfd, 0x13, 0xfd, 0x05, 0x05, 0x0a, 0xf4, 0xd0, 0xfe, 0x85, 0x16, 0x05, 0x8a, 0x79, 0x2c, 0xdf,
0xa2, 0x1e, 0x49, 0x4f, 0xbd, 0x71, 0xbe, 0xd7, 0x7c, 0xef, 0xf9, 0xbe, 0x25, 0xdc, 0x38, 0x0c,
0x82, 0x37, 0x7e, 0xff, 0xc8, 0x89, 0x69, 0x74, 0xec, 0xb7, 0x69, 0x39, 0x8c, 0x82, 0x24, 0x40,
0xbb, 0xf4, 0x24, 0x29, 0xf7, 0xdc, 0x30, 0x2e, 0x4b, 0x7c, 0x39, 0x74, 0xa3, 0xa4, 0x4f, 0xa3,
0xf2, 0xf1, 0xfe, 0xce, 0x3b, 0x47, 0x41, 0x70, 0xd4, 0xa5, 0x0f, 0x38, 0xe9, 0xe1, 0xa0, 0xf3,
0xc0, 0x1b, 0x44, 0x6e, 0xe2, 0x07, 0x7d, 0xc1, 0xbc, 0xb3, 0x37, 0x8d, 0xef, 0xf8, 0xb4, 0xeb,
0x39, 0x3d, 0x37, 0x7e, 0x23, 0x29, 0xee, 0x4c, 0x53, 0x24, 0x7e, 0x8f, 0xc6, 0x89, 0xdb, 0x0b,
0x05, 0x81, 0xfa, 0xc7, 0x2c, 0xe4, 0xac, 0x6e, 0x90, 0xa0, 0x3b, 0xb0, 0xd6, 0xa3, 0x51, 0xfb,
0xb5, 0xdb, 0x4f, 0x1c, 0xdf, 0x2b, 0x65, 0xf6, 0x32, 0xef, 0x17, 0x08, 0xa4, 0x20, 0xc3, 0x43,
0xb7, 0x01, 0xa4, 0xea, 0x0c, 0x9f, 0xe5, 0xf8, 0x82, 0x84, 0x18, 0x1e, 0xfa, 0x01, 0x40, 0x9c,
0xb8, 0x51, 0xe2, 0xb0, 0x1b, 0x4a, 0x4b, 0x7b, 0x99, 0xf7, 0xd7, 0xf6, 0x77, 0xca, 0xe2, 0xfa,
0x72, 0x7a, 0x7d, 0xd9, 0x4e, 0xaf, 0x27, 0x05, 0x4e, 0xcd, 0xce, 0xe8, 0x11, 0xac, 0xa6, 0x86,
0x95, 0x72, 0x9c, 0xf1, 0xd6, 0x0c, 0xa3, 0x2e, 0x09, 0xc8, 0x90, 0x14, 0x7d, 0x17, 0x14, 0xf7,
0xd8, 0xf5, 0xbb, 0xee, 0xa1, 0xdf, 0xf5, 0x93, 0x53, 0x27, 0x71, 0x8f, 0x4a, 0x79, 0xae, 0xd6,
0xf5, 0x71, 0xb8, 0xed, 0x1e, 0x21, 0x1d, 0x0a, 0x11, 0x8d, 0x83, 0x41, 0xd4, 0xa6, 0x71, 0x69,
0x99, 0x5f, 0xf1, 0xed, 0xf2, 0x02, 0xcf, 0x97, 0x49, 0x4a, 0x4d, 0x46, 0x8c, 0xcf, 0x72, 0xab,
0x2b, 0xca, 0xaa, 0xfa, 0x97, 0x0c, 0xe4, 0x6b, 0xd4, 0x8d, 0x29, 0xba, 0x05, 0xab, 0x5d, 0xf6,
0x63, 0xe4, 0xaf, 0x15, 0x7e, 0x36, 0x3c, 0xf4, 0x08, 0x72, 0x71, 0x37, 0x48, 0xb8, 0x9b, 0xd6,
0xf6, 0xef, 0x2e, 0xbc, 0x8b, 0xb9, 0x9f, 0x70, 0x72, 0xf4, 0x2d, 0x28, 0x0e, 0x62, 0x1a, 0x39,
0x11, 0xed, 0xd0, 0x88, 0xf6, 0xdb, 0xc2, 0x91, 0x05, 0xb2, 0xc1, 0xa0, 0x24, 0x05, 0x22, 0x13,
0x6e, 0x88, 0x8b, 0xe9, 0x49, 0xe8, 0x0b, 0x6f, 0x08, 0xb7, 0xe7, 0xce, 0x75, 0xfb, 0x16, 0x67,
0xc4, 0x43, 0x3e, 0x86, 0x51, 0xef, 0x43, 0x91, 0x5b, 0x34, 0xba, 0xe1, 0x6c, 0xd3, 0xd4, 0xbf,
0x66, 0x61, 0xa5, 0x22, 0xac, 0x60, 0x39, 0x91, 0xa6, 0xf5, 0x90, 0xb0, 0x20, 0x21, 0x57, 0xf7,
0xc2, 0x4b, 0x50, 0xb8, 0x17, 0xfc, 0x7e, 0x27, 0x88, 0x7a, 0x22, 0x2f, 0x44, 0x42, 0x7d, 0xb0,
0x50, 0x44, 0x2b, 0xa6, 0x91, 0x31, 0xe2, 0x21, 0xd7, 0x07, 0x93, 0x00, 0x54, 0x81, 0xe5, 0x38,
0x71, 0x93, 0x41, 0xcc, 0x1d, 0x55, 0xdc, 0xbf, 0xb7, 0x50, 0x9c, 0x34, 0xd2, 0xe2, 0x1c, 0x44,
0x72, 0xa2, 0x9f, 0xc2, 0x56, 0xe8, 0x9e, 0xf6, 0x28, 0x2b, 0x93, 0x31, 0xfd, 0xf2, 0x5c, 0xbf,
0x07, 0x0b, 0x05, 0x36, 0x05, 0xdf, 0xb8, 0x8a, 0x28, 0x9c, 0x81, 0xa9, 0x7f, 0xcf, 0xc0, 0xf5,
0x29, 0x53, 0xd0, 0x4d, 0x58, 0x11, 0x2e, 0x49, 0xbd, 0xbc, 0xcc, 0x6d, 0xe3, 0x55, 0x79, 0xe4,
0x1f, 0xd3, 0xbe, 0xd3, 0x77, 0x7b, 0x34, 0xad, 0x4a, 0x0e, 0x31, 0xdd, 0x1e, 0x65, 0x55, 0xdd,
0x71, 0x7b, 0x7e, 0xf7, 0x54, 0xe0, 0x45, 0x36, 0x81, 0x00, 0x71, 0x02, 0x1d, 0x56, 0x5c, 0xcf,
0x8b, 0x68, 0x1c, 0xcb, 0xe4, 0x59, 0xec, 0x93, 0x66, 0x10, 0x27, 0x6e, 0x57, 0x13, 0x1c, 0x24,
0x65, 0x45, 0x6f, 0x43, 0x21, 0xa1, 0x5d, 0x1a, 0xbe, 0x0e, 0xfa, 0x54, 0xd6, 0xe0, 0x08, 0x80,
0xb6, 0x21, 0x4f, 0x7b, 0xae, 0xdf, 0xe5, 0x95, 0x57, 0x20, 0xe2, 0xa0, 0xfe, 0x3a, 0x0b, 0x1b,
0x13, 0xe2, 0xd0, 0x77, 0xe0, 0xba, 0x14, 0xe8, 0xb4, 0x83, 0x41, 0x3f, 0x89, 0x4e, 0xa5, 0xb1,
0x45, 0x09, 0xae, 0x0a, 0x28, 0xaf, 0x7c, 0x49, 0xd8, 0x0d, 0xda, 0x2e, 0xab, 0x72, 0x69, 0x7a,
0x2a, 0xa0, 0x26, 0xc1, 0xac, 0xa2, 0x52, 0xd2, 0x88, 0x1e, 0xa5, 0x99, 0x54, 0x20, 0x1b, 0x12,
0x4a, 0x38, 0x10, 0x7d, 0x04, 0x6f, 0x85, 0x41, 0x9c, 0x38, 0x41, 0xa7, 0xc3, 0x1a, 0xdc, 0x61,
0x70, 0xe2, 0xf4, 0x07, 0xbd, 0x43, 0x1a, 0x71, 0xaf, 0x14, 0xc8, 0x16, 0xc3, 0x36, 0x38, 0xb2,
0x12, 0x9c, 0x98, 0x1c, 0xc5, 0x9c, 0x1b, 0x72, 0x03, 0x9c, 0x76, 0xe0, 0xa5, 0x76, 0x83, 0x00,
0x55, 0x03, 0x8f, 0xb2, 0xcb, 0xe3, 0x24, 0xa2, 0x34, 0x71, 0x52, 0x1f, 0x0b, 0x0f, 0x6c, 0x08,
0xa8, 0xb4, 0x5b, 0xfd, 0x53, 0x16, 0x76, 0x65, 0x6e, 0x34, 0xa3, 0xa0, 0x4d, 0xe3, 0xd8, 0xef,
0x1f, 0x35, 0xdd, 0xc8, 0xed, 0xd1, 0x84, 0x46, 0x31, 0x3a, 0x82, 0x42, 0x28, 0xe0, 0x41, 0xc4,
0x3d, 0x52, 0xdc, 0x37, 0x2e, 0x92, 0x68, 0xf3, 0x84, 0x4d, 0xe1, 0x82, 0x88, 0x8c, 0x64, 0xa3,
0x0f, 0x61, 0x3b, 0xcd, 0xed, 0x1e, 0x4d, 0x5e, 0x07, 0x9e, 0x93, 0x04, 0x6f, 0x68, 0x5f, 0xfa,
0x36, 0xcd, 0xd5, 0x3a, 0x47, 0xd9, 0x0c, 0x83, 0x4a, 0xb0, 0x72, 0x4c, 0xa3, 0x78, 0xe4, 0xd7,
0xf4, 0xa8, 0x7a, 0xa0, 0x4c, 0x5f, 0x85, 0xee, 0xc2, 0xed, 0xa6, 0xf6, 0xaa, 0x8e, 0x4d, 0xdb,
0x69, 0x92, 0x46, 0x15, 0x5b, 0x56, 0x83, 0x38, 0x2d, 0xd3, 0x6a, 0xe2, 0xaa, 0xf1, 0xc4, 0xc0,
0xba, 0x72, 0x0d, 0x6d, 0x83, 0x32, 0x42, 0x59, 0x36, 0x31, 0x9a, 0x58, 0xc9, 0xa0, 0x9b, 0xb0,
0x35, 0x82, 0x56, 0x88, 0x66, 0x98, 0x36, 0xc1, 0x58, 0xc9, 0xaa, 0x0d, 0xc8, 0x37, 0x23, 0xbf,
0x4d, 0xd1, 0x5d, 0x58, 0x0f, 0xd9, 0x0f, 0xa7, 0xe7, 0xb7, 0xa3, 0x20, 0xe6, 0x6e, 0x5a, 0x22,
0x6b, 0x1c, 0x56, 0xe7, 0x20, 0xf4, 0x2e, 0x6c, 0xb4, 0x07, 0x11, 0xeb, 0x6f, 0xa7, 0x22, 0x60,
0xc2, 0xac, 0xf5, 0x14, 0xc8, 0x42, 0xa6, 0xfe, 0x66, 0x09, 0x36, 0x59, 0xf1, 0x49, 0xdd, 0x1b,
0x61, 0x22, 0xd3, 0x83, 0x97, 0x5f, 0xea, 0x9d, 0x80, 0x83, 0x47, 0xd5, 0xb8, 0x35, 0x98, 0x66,
0x31, 0x3c, 0xa4, 0x83, 0x72, 0xec, 0x76, 0x7d, 0xcf, 0x19, 0x7b, 0x17, 0xb3, 0xe7, 0x36, 0xe8,
0x22, 0xe7, 0xb1, 0x86, 0x8f, 0xe3, 0x27, 0x20, 0x20, 0x0e, 0xed, 0x7b, 0x17, 0x7d, 0x5b, 0xd7,
0x39, 0x07, 0xee, 0x7b, 0x5c, 0x42, 0x05, 0x72, 0xc9, 0x69, 0x48, 0x65, 0xcf, 0x2b, 0x5f, 0x24,
0x73, 0x84, 0x0d, 0xf6, 0x69, 0x48, 0x09, 0xe7, 0x65, 0x99, 0x1c, 0x44, 0xfe, 0x91, 0xdf, 0xe7,
0xc9, 0x3e, 0xe8, 0x27, 0x3c, 0xdb, 0xf3, 0x64, 0x23, 0x85, 0xf2, 0xd2, 0x1c, 0xb9, 0x38, 0x91,
0x54, 0xcb, 0x9c, 0x4a, 0xba, 0x38, 0x11, 0x44, 0xf7, 0x60, 0x73, 0xd6, 0x8f, 0x2b, 0xa2, 0x7c,
0xc3, 0x49, 0x1f, 0xaa, 0xff, 0xce, 0x01, 0x9a, 0x6d, 0x9b, 0xe8, 0x33, 0xd8, 0x0c, 0x23, 0x9a,
0x4a, 0x91, 0x3d, 0x5d, 0x54, 0xc6, 0xf7, 0x16, 0xdb, 0x37, 0xe4, 0x92, 0x6d, 0x5d, 0x09, 0xa7,
0x20, 0xe8, 0x63, 0x78, 0x2b, 0x15, 0x9c, 0x44, 0x6e, 0x3f, 0x76, 0xdb, 0xa9, 0x8e, 0x22, 0x5f,
0xd2, 0x12, 0xb1, 0x47, 0x48, 0xc3, 0x43, 0x8f, 0x21, 0xcf, 0x73, 0x4d, 0x46, 0x47, 0x3d, 0x47,
0x0b, 0xbf, 0x4d, 0x89, 0x60, 0x40, 0x1a, 0x40, 0xe2, 0x9e, 0x38, 0x6e, 0x8f, 0x3b, 0x2c, 0x77,
0x61, 0xf6, 0x42, 0xe2, 0x9e, 0x68, 0x9c, 0x09, 0x25, 0xa3, 0xba, 0x95, 0xc5, 0x4c, 0x3d, 0xe7,
0xf0, 0x94, 0xc7, 0xa8, 0xb8, 0x5f, 0xb9, 0xe4, 0xa3, 0x34, 0xd5, 0x22, 0xa8, 0x57, 0x39, 0x1d,
0xd6, 0xfe, 0x18, 0x0c, 0x7d, 0x30, 0x2f, 0x8e, 0xbc, 0xc1, 0x3d, 0xbd, 0x36, 0x13, 0x49, 0xf4,
0xe8, 0xcc, 0x12, 0x5a, 0x91, 0x2c, 0xf3, 0x8a, 0x48, 0xed, 0x0d, 0xe3, 0x3f, 0x7e, 0xf5, 0x7b,
0xb0, 0x37, 0xd5, 0x48, 0xb0, 0xee, 0x54, 0x5e, 0x4d, 0xf5, 0x92, 0x51, 0xd7, 0x10, 0xd8, 0x83,
0x46, 0xe3, 0xa0, 0xc6, 0xda, 0x49, 0x09, 0xb6, 0x27, 0x10, 0x4d, 0x8d, 0xd8, 0x26, 0x26, 0x4a,
0xb6, 0xb2, 0x0e, 0x30, 0x7c, 0xdd, 0x3d, 0xf5, 0xcf, 0x79, 0x28, 0xca, 0x29, 0xe0, 0x89, 0xeb,
0x77, 0x07, 0x11, 0x45, 0x07, 0x90, 0x6f, 0xbb, 0x83, 0x98, 0xca, 0x6c, 0x7b, 0x78, 0x91, 0x09,
0x42, 0xf2, 0x96, 0xab, 0x8c, 0x91, 0x08, 0x7e, 0xf4, 0x1a, 0x50, 0x44, 0x7f, 0x46, 0xdb, 0x09,
0xf5, 0x9c, 0xb6, 0x1b, 0x79, 0x0e, 0xaf, 0xd1, 0x2c, 0x97, 0xfa, 0xc3, 0x4b, 0x49, 0x8d, 0xa8,
0xe7, 0x27, 0x55, 0x37, 0xf2, 0x78, 0xbd, 0x2a, 0xa9, 0xd4, 0x14, 0x82, 0xf6, 0x60, 0xcd, 0xa3,
0x71, 0x3b, 0xf2, 0xc3, 0x64, 0xd4, 0xa7, 0xc7, 0x41, 0xea, 0xdf, 0xb2, 0x90, 0xe7, 0xca, 0xa1,
0x1b, 0xb0, 0x59, 0xd5, 0x5a, 0x16, 0x9e, 0xed, 0xca, 0x56, 0xad, 0x61, 0x3b, 0x2d, 0x53, 0x7b,
0xa1, 0x19, 0x35, 0xad, 0xc2, 0xdd, 0x78, 0x07, 0x76, 0x39, 0x54, 0xab, 0x11, 0xac, 0xe9, 0xaf,
0x9c, 0x4a, 0xa3, 0xf1, 0x13, 0x19, 0x07, 0x8b, 0x79, 0x13, 0x6d, 0xc2, 0x46, 0x0d, 0x6b, 0x16,
0x76, 0xf0, 0xa7, 0x4d, 0x83, 0x60, 0x5d, 0x59, 0x62, 0x3c, 0x8d, 0x96, 0x6d, 0x19, 0x3a, 0x76,
0xaa, 0x9a, 0x59, 0xc5, 0xb5, 0x9a, 0x66, 0x1b, 0x0d, 0xd3, 0x79, 0x69, 0x98, 0x7a, 0xe3, 0xa5,
0x92, 0x1b, 0x0f, 0x2d, 0x26, 0xa4, 0x41, 0x9c, 0xaa, 0x46, 0x74, 0xc7, 0x7e, 0xd5, 0xc4, 0x0e,
0xc1, 0xcf, 0x70, 0xd5, 0xc6, 0xba, 0x92, 0x67, 0x62, 0xe6, 0x50, 0xe9, 0xb8, 0x5a, 0x33, 0x4c,
0xac, 0x2b, 0xcb, 0xe8, 0x6d, 0x28, 0xa5, 0x04, 0x8d, 0x26, 0xbf, 0xc1, 0x6c, 0xd8, 0xce, 0x0b,
0xad, 0x66, 0xe8, 0xca, 0x0a, 0x53, 0x6c, 0x82, 0x5d, 0x59, 0x45, 0x2a, 0xbc, 0xc3, 0xb4, 0x66,
0x5a, 0x31, 0x4a, 0xe6, 0x83, 0x49, 0x01, 0x4a, 0x01, 0xdd, 0x86, 0x5b, 0xcc, 0x46, 0xc3, 0x3c,
0x18, 0xda, 0x2c, 0x8d, 0xc0, 0xba, 0x02, 0x68, 0x17, 0x6e, 0xa6, 0x68, 0x26, 0x22, 0xb5, 0x8f,
0x39, 0x6b, 0x4d, 0x0d, 0xa1, 0x38, 0x19, 0x29, 0xb4, 0x07, 0x6f, 0x57, 0x09, 0xd6, 0x0d, 0x7b,
0xcc, 0xc4, 0x49, 0xb7, 0xaf, 0x42, 0xee, 0x85, 0x61, 0x69, 0x4a, 0x06, 0x15, 0x01, 0xea, 0x9a,
0x65, 0x63, 0xc2, 0x48, 0x95, 0x2c, 0x0b, 0x88, 0x56, 0xc7, 0xc4, 0xa8, 0x6a, 0x26, 0x73, 0x2e,
0xc1, 0x96, 0xa5, 0x2c, 0xa1, 0x75, 0x58, 0xd5, 0x0d, 0xab, 0xda, 0x78, 0x81, 0x89, 0x92, 0x53,
0x3f, 0x87, 0xc2, 0x70, 0x8d, 0x61, 0x03, 0x7d, 0x9c, 0xb8, 0x9d, 0xce, 0xd8, 0x40, 0xcf, 0xcf,
0x86, 0xc7, 0x66, 0xcb, 0x28, 0x08, 0x7a, 0xa3, 0x0e, 0xb7, 0xcc, 0x8e, 0x62, 0xb6, 0x64, 0x69,
0x77, 0xea, 0xc4, 0xfe, 0x97, 0xa2, 0xb1, 0xe5, 0x49, 0x81, 0x43, 0x2c, 0xff, 0x4b, 0xaa, 0x3e,
0x87, 0x52, 0xf5, 0x35, 0x6d, 0xbf, 0xd1, 0xc6, 0x96, 0x2d, 0x42, 0xbf, 0x18, 0xd0, 0x38, 0x19,
0x4e, 0xfe, 0x99, 0x4b, 0x4d, 0xfe, 0xea, 0x3f, 0xb3, 0x70, 0x6b, 0x8e, 0xcc, 0x38, 0x0c, 0xfa,
0x31, 0xbd, 0xa2, 0x50, 0x36, 0x56, 0xf2, 0xc7, 0xc8, 0x91, 0x5b, 0x61, 0x57, 0x94, 0x59, 0x9e,
0x14, 0x39, 0x58, 0x4b, 0xa1, 0xe8, 0x17, 0xb0, 0x9d, 0x2e, 0x97, 0x4e, 0x44, 0xbf, 0x18, 0xf8,
0x11, 0x65, 0x9d, 0x80, 0x5b, 0x5e, 0xdc, 0x7f, 0xb6, 0xf0, 0xbe, 0x33, 0xb5, 0x1e, 0x6d, 0xae,
0x23, 0x89, 0x64, 0xcb, 0x9b, 0x05, 0xaa, 0x3d, 0xd8, 0x9a, 0x43, 0xcb, 0x0a, 0x42, 0x6f, 0x11,
0x51, 0x25, 0x04, 0x3f, 0x6f, 0x19, 0x04, 0xf3, 0xac, 0x9c, 0x4c, 0x95, 0x12, 0x6c, 0xeb, 0x0d,
0x9e, 0x76, 0xd6, 0xd3, 0xc6, 0x4b, 0x27, 0xe5, 0x50, 0x32, 0xe8, 0x2d, 0x40, 0xf5, 0x96, 0x35,
0x0d, 0xcf, 0xaa, 0x26, 0xa0, 0x6a, 0x44, 0xdd, 0x84, 0xca, 0xd5, 0x4f, 0x04, 0xee, 0x31, 0xe4,
0xf9, 0xa2, 0x27, 0x9d, 0xbc, 0xf8, 0x21, 0x12, 0x9c, 0x82, 0x41, 0xfd, 0x43, 0x06, 0xb6, 0x26,
0x04, 0xca, 0xa8, 0x5d, 0x59, 0x22, 0xb2, 0xe1, 0x7a, 0xba, 0x5d, 0x76, 0x44, 0xb3, 0x93, 0xf3,
0xd3, 0xfd, 0x4b, 0xf4, 0x47, 0x52, 0x3c, 0x9c, 0x38, 0xab, 0xff, 0x59, 0x82, 0x6d, 0xa1, 0xa7,
0x24, 0xfc, 0x7a, 0x39, 0x8b, 0x9e, 0x42, 0x41, 0xac, 0xca, 0x11, 0xed, 0x5c, 0x48, 0xbf, 0xc9,
0x55, 0x9b, 0x88, 0x45, 0x9b, 0xd0, 0xce, 0xff, 0x6e, 0xef, 0x3d, 0x63, 0x67, 0xcd, 0x7d, 0x63,
0x3b, 0x2b, 0xfa, 0x39, 0xdc, 0x9e, 0x9a, 0x40, 0x58, 0xd4, 0xc2, 0xe1, 0xda, 0x21, 0xf7, 0xe3,
0xc7, 0x57, 0x5d, 0x5b, 0xc8, 0x6e, 0xb8, 0x60, 0x41, 0xba, 0x0f, 0x9b, 0xbe, 0x47, 0x7b, 0x61,
0x90, 0xf0, 0xe1, 0x5e, 0x2c, 0x2d, 0x62, 0xd5, 0x52, 0xc6, 0x10, 0x7c, 0x65, 0x51, 0x7f, 0x9b,
0x85, 0x1b, 0x53, 0xf1, 0x97, 0x99, 0xfa, 0x63, 0x58, 0x91, 0x5a, 0xc9, 0x1c, 0x78, 0xef, 0x22,
0x79, 0x46, 0x52, 0x26, 0xf4, 0x39, 0x6c, 0xcd, 0x19, 0x71, 0x64, 0x4e, 0x94, 0xcf, 0x0d, 0xe1,
0xc4, 0xe8, 0x43, 0x36, 0x67, 0xa6, 0xa1, 0x79, 0xf5, 0xb0, 0xf4, 0xf5, 0xeb, 0xe1, 0xab, 0x0c,
0x6c, 0xb7, 0x42, 0x6f, 0xb6, 0x1e, 0x7e, 0x04, 0x6b, 0x03, 0x0e, 0xe7, 0x1f, 0x14, 0xa5, 0x4b,
0x66, 0xd7, 0x8e, 0x27, 0x3e, 0xed, 0x7a, 0x75, 0x37, 0x7e, 0x43, 0x40, 0x90, 0xb3, 0xdf, 0xe3,
0xbe, 0xcc, 0x5e, 0xc1, 0x97, 0x3c, 0x4a, 0x53, 0x5a, 0xfd, 0x5f, 0x47, 0xe9, 0x31, 0xdc, 0x3c,
0xa0, 0xc9, 0xe4, 0x27, 0x29, 0x19, 0xa7, 0xc5, 0x1f, 0xe1, 0xd4, 0x7f, 0x64, 0xa0, 0x34, 0xcb,
0x2a, 0x9d, 0x79, 0xce, 0x07, 0xbc, 0xe7, 0x50, 0x1c, 0x7e, 0xb6, 0x16, 0x4b, 0x56, 0xf6, 0xd2,
0x1f, 0xce, 0x36, 0x0e, 0xc7, 0x8f, 0xf3, 0x57, 0xb7, 0xa5, 0x6f, 0x64, 0x75, 0x53, 0xcb, 0xb0,
0x55, 0xf3, 0xe3, 0xd4, 0xd4, 0xa1, 0x83, 0xce, 0xfa, 0x78, 0xa6, 0x7e, 0x0a, 0xdb, 0x93, 0xf4,
0xd2, 0x2b, 0x9f, 0xc0, 0xaa, 0x54, 0x80, 0x6d, 0x95, 0x4b, 0x17, 0xce, 0xb1, 0x21, 0xd7, 0xbd,
0xdf, 0x65, 0x60, 0x73, 0x66, 0x97, 0x46, 0xef, 0xc2, 0x9d, 0xa9, 0xa1, 0x74, 0xce, 0xd0, 0x77,
0x1b, 0x6e, 0x4d, 0x11, 0x59, 0x86, 0x79, 0x50, 0xc3, 0x6c, 0x24, 0x55, 0x32, 0x73, 0x06, 0xdb,
0x7a, 0xab, 0x66, 0x1b, 0x1c, 0x9b, 0x65, 0x33, 0xe5, 0x14, 0xb6, 0x65, 0xd6, 0x8c, 0xba, 0x61,
0x63, 0x9d, 0x53, 0x2c, 0xdd, 0xfb, 0x2a, 0x03, 0x1b, 0x13, 0x01, 0x42, 0xef, 0xc0, 0x4e, 0x3a,
0xb6, 0x5a, 0xb6, 0x66, 0xb7, 0xac, 0x29, 0x85, 0x36, 0xa0, 0x50, 0x6d, 0x98, 0x4f, 0x0c, 0x52,
0xc7, 0xba, 0x92, 0xe1, 0x1f, 0x71, 0xb0, 0xa9, 0x33, 0xf2, 0x3a, 0x26, 0xd5, 0xa7, 0x9a, 0x69,
0x3b, 0x12, 0x2f, 0x47, 0x0b, 0x36, 0x87, 0x8a, 0xe1, 0x97, 0x8f, 0xfc, 0x6b, 0xb0, 0x62, 0x36,
0xf8, 0xf8, 0xa1, 0xe4, 0xd8, 0x82, 0x21, 0x0f, 0x4e, 0x13, 0x9b, 0x5a, 0xcd, 0xf8, 0x8c, 0xcd,
0xf3, 0xf7, 0x7e, 0x9f, 0x01, 0x65, 0x3a, 0xc0, 0xfc, 0x26, 0x82, 0x53, 0x7b, 0xe6, 0xea, 0xc6,
0x57, 0x3c, 0x3c, 0xb6, 0x0b, 0xbe, 0x30, 0x74, 0xae, 0xe5, 0x2e, 0xdc, 0x1c, 0x43, 0xb0, 0xb9,
0x68, 0x88, 0xcc, 0x4e, 0x71, 0x11, 0xfc, 0xa4, 0x65, 0xea, 0x5c, 0xd5, 0x49, 0x84, 0x98, 0xce,
0xb1, 0xae, 0xe4, 0xf6, 0xff, 0x35, 0xda, 0x04, 0x2d, 0xf1, 0x97, 0x07, 0xfa, 0x55, 0x06, 0x36,
0x67, 0xa6, 0x3e, 0xf4, 0xe8, 0xb2, 0x53, 0x22, 0x4f, 0xd1, 0x9d, 0xef, 0x5f, 0x6d, 0xb8, 0x54,
0xaf, 0xa1, 0x08, 0xd6, 0xc6, 0xa6, 0x2e, 0xb4, 0xf8, 0x35, 0x9f, 0x1d, 0xf8, 0x76, 0x3e, 0xbc,
0x38, 0xc3, 0xf0, 0xce, 0x13, 0xd8, 0x98, 0x78, 0x41, 0xd1, 0xc3, 0x0b, 0x08, 0x99, 0x7c, 0x5d,
0x76, 0xf6, 0x2f, 0xc3, 0x32, 0x7e, 0xf3, 0xc4, 0xab, 0x70, 0xce, 0xcd, 0xf3, 0xde, 0xb5, 0x73,
0x6e, 0x9e, 0xfb, 0xe8, 0xa8, 0xd7, 0xd0, 0x2f, 0x33, 0xa0, 0x4c, 0xb7, 0x51, 0xf4, 0xf1, 0x42,
0x51, 0x67, 0x34, 0xec, 0x9d, 0x47, 0x97, 0xe4, 0x1a, 0xea, 0x30, 0x80, 0xf5, 0xf1, 0x7e, 0x85,
0x16, 0xc7, 0x6e, 0x4e, 0x2b, 0xdc, 0x79, 0x78, 0x09, 0x8e, 0xf4, 0xda, 0xc3, 0x65, 0xfe, 0xd6,
0x7f, 0xf4, 0xdf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xe9, 0x16, 0x9d, 0x8b, 0xc3, 0x1c, 0x00, 0x00,
}