Add async confirmation mode for GetBookingStatus
Also commit trailing changes with BAL
diff --git a/api/api.go b/api/api.go
index 61e0129..73e5873 100644
--- a/api/api.go
+++ b/api/api.go
@@ -55,6 +55,11 @@
reqTimeout = 10 * time.Second
)
+type slotKey struct {
+ serviceID string
+ startSec int64
+}
+
func setupCertConfig(caFile string, fullServerName string) (*tls.Config, error) {
if caFile == "" {
return nil, nil
@@ -218,29 +223,34 @@
return nil
}
-// BatchAvailabilityLookup performs a maps booking batch availability lookup on all supplied availability slots. This function
-// returns any errors when trying to call the BatchAvailabilityLookup RPC.
-func BatchAvailabilityLookup(ctx context.Context, logger *log.Logger, av []*fpb.Availability, conn *utils.HTTPConnection) error {
+// AvailableSlotsFromBAL performs a maps booking batch availability lookup on all supplied availability slots. This function
+// returns any errors when trying to call the BatchAvailabilityLookup RPC or returns all slots the aggregator marked as available.
+func AvailableSlotsFromBAL(ctx context.Context, logger *log.Logger, av []*fpb.Availability, conn *utils.HTTPConnection) ([]*fpb.Availability, error) {
+ var slotMap = make(map[slotKey]*fpb.Availability)
+ for _, a := range av {
+ slotMap[slotKey{a.ServiceId, a.StartSec}] = a
+ }
reqPB, err := utils.BuildBatchAvailabilityLookupRequestFrom(av)
if err != nil {
- return fmt.Errorf("unable to build request for batch availability lookup flow. err: %v, availability records: %v", err, av)
+ return nil, fmt.Errorf("unable to build request for batch availability lookup flow. err: %v, availability records: %v", err, av)
}
req, err := conn.Marshaler.MarshalToString(reqPB)
if err != nil {
- return fmt.Errorf("Could not convert pb3 to json: %v", reqPB)
+ return nil, fmt.Errorf("Could not convert pb3 to json: %v", reqPB)
}
httpResp, err := sendRequest(ctx, logger, "BatchAvailabilityLookup", req, conn)
if err != nil {
- return fmt.Errorf("invalid response. BatchAvailabilityLookup yielded error: %v", err)
+ return nil, fmt.Errorf("invalid response. BatchAvailabilityLookup yielded error: %v", err)
}
var resp mpb.BatchAvailabilityLookupResponse
if err := jsonpb.UnmarshalString(httpResp, &resp); err != nil {
- return fmt.Errorf("BatchAvailabilityLookup: Could not parse HTTP response to pb3: %v", err)
+ return nil, fmt.Errorf("BatchAvailabilityLookup: Could not parse HTTP response to pb3: %v", err)
}
if len(resp.GetSlotTimeAvailability()) != len(reqPB.GetSlotTime()) {
- return fmt.Errorf("invalid response. BatchAvailabilityLookup response.size and request.size differ: %v vs %v", len(resp.GetSlotTimeAvailability()), len(reqPB.GetSlotTime()))
+ return nil, fmt.Errorf("invalid response. BatchAvailabilityLookup response.size and request.size differ: %v vs %v", len(resp.GetSlotTimeAvailability()), len(reqPB.GetSlotTime()))
}
diffCount := 0
+ var slots []*fpb.Availability
for i := 0; i < len(reqPB.GetSlotTime()); i++ {
slotTimeReq := reqPB.GetSlotTime()[i]
slotTimeResp := resp.GetSlotTimeAvailability()[i].GetSlotTime()
@@ -248,11 +258,14 @@
logger.Printf("Slot %v differs: req=%v, resp=%v", i, slotTimeReq, slotTimeResp)
diffCount++
}
+ if resp.GetSlotTimeAvailability()[i].GetAvailable() {
+ slots = append(slots, slotMap[slotKey{slotTimeResp.GetServiceId(), slotTimeResp.GetStartSec()}])
+ }
}
if diffCount > 0 {
- return fmt.Errorf("invalid response. Found %v diffs", diffCount)
+ return nil, fmt.Errorf("invalid response. Found %v diffs", diffCount)
}
- return nil
+ return slots, nil
}
// CreateBooking attempts to create bookings from availability slots.
@@ -316,7 +329,7 @@
return nil, fmt.Errorf("CreateBooking idem: Could not parse HTTP response to pb3: %v", err)
}
- if diff := cmp.Diff(idemResp, resp); diff != "" {
+ if diff := cmp.Diff(&idemResp, &resp, cmp.Comparer(proto.Equal)); diff != "" {
return b, fmt.Errorf("Idempotency check invalid (-got +want)\n%s", diff)
}
@@ -382,8 +395,14 @@
return fmt.Errorf("GetBookingsStatus: Could not parse HTTP response to pb3: %v", err)
}
- if diff := cmp.Diff(resp.GetBookingStatus(), mpb.BookingStatus_CONFIRMED); diff != "" {
- return fmt.Errorf("invalid response. BookingStatus differ (-got +want)\n%s", diff)
+ // BookingStatus_CONFIRMED is the default case unless the slot is async, in which
+ // case the default is BookingStatus_PENDING_MERCHANT_CONFIRMATION.
+ wantStatus := mpb.BookingStatus_CONFIRMED
+ if b.GetSlot().GetConfirmationMode() == mpb.ConfirmationMode_CONFIRMATION_MODE_ASYNCHRONOUS {
+ wantStatus = mpb.BookingStatus_PENDING_MERCHANT_CONFIRMATION
+ }
+ if diff := cmp.Diff(resp.GetBookingStatus(), wantStatus); diff != "" {
+ return fmt.Errorf("invalid response. BookingStatus differs (-got +want)\n%s", diff)
}
return nil
@@ -749,7 +768,7 @@
return "", fmt.Errorf("CreateWaitlistEntry idem: Could not parse HTTP response to pb3: %v", err)
}
- if diff := cmp.Diff(idemResp, resp); diff != "" {
+ if diff := cmp.Diff(&idemResp, &resp, cmp.Comparer(proto.Equal)); diff != "" {
return "", fmt.Errorf("Idempotency check invalid (-got +want)\n%s for service: %s", diff, s.GetServiceId())
}
diff --git a/booking/bookingTests.go b/booking/bookingTests.go
index b44ec05..88bf766 100644
--- a/booking/bookingTests.go
+++ b/booking/bookingTests.go
@@ -36,23 +36,29 @@
var out api.Bookings
totalSlots := len(av)
- for i, a := range av {
- if config.BookingUseBal {
- if err := api.BatchAvailabilityLookup(ctx, logger, []*fpb.Availability{a}, conn); err != nil {
- logger.Printf("BAL error: %s. skipping slot %d/%d", err.Error(), i, totalSlots)
- stats.BookingBatchAvailabilityLookupErrors++
- continue
- }
+ var available []*fpb.Availability
+ if config.BookingUseBal {
+ if avSlot, err := api.AvailableSlotsFromBAL(ctx, logger, av, conn); err != nil {
+ logger.Printf("BAL error: %s. skipping %d slots", err.Error(), totalSlots)
+ stats.BookingBatchAvailabilityLookupErrors++
+ } else if len(avSlot) > 0 {
+ available = append(available, avSlot...)
stats.BookingBatchAvailabilityLookupSuccess++
- } else {
+ }
+ } else {
+ for i, a := range av {
if err := api.CheckAvailability(ctx, logger, a, conn); err != nil {
logger.Printf("%s. skipping slot %d/%d", err.Error(), i, totalSlots)
stats.BookingCheckAvailabilityErrors++
continue
}
+ available = append(available, a)
stats.BookingCheckAvailabilitySuccess++
}
+ }
+ totalSlots = len(available)
+ for i, a := range available {
booking, err := api.CreateBooking(ctx, logger, a, conn)
if err != nil {
logger.Printf("%s. skipping slot %d/%d", err.Error(), i, totalSlots)
@@ -123,6 +129,7 @@
// RunTests runs booking tests.
func RunTests(ctx context.Context, logger *log.Logger, config *utils.Config, av []*fpb.Availability, avForRescheduling []*fpb.Availability, stats *utils.TestSummary) {
conn := config.Conn
+ var slots = av
// HealthCheck Flow
if config.BookingHealthFlow || config.BookingAllFlows {
stats.BookingHealthCheckSuccess = true
@@ -138,13 +145,16 @@
}
}
if config.BookingCheckFlow || config.BookingAllFlows {
+ slots = nil
if config.BookingUseBal {
utils.LogFlow(logger, "Batch Availability Lookup", "Start")
for _, a := range utils.SplitAvailabilityByMerchant(av) {
- if err := api.BatchAvailabilityLookup(ctx, logger, a, conn); err != nil {
+ if avSlots, err := api.AvailableSlotsFromBAL(ctx, logger, a, conn); err != nil {
logger.Printf("BatchAvailabilityLookup returned error: %v", err)
stats.BookingBatchAvailabilityLookupErrors++
} else {
+ // Only test CreateBooking on available slots.
+ slots = append(slots, avSlots...)
stats.BookingBatchAvailabilityLookupSuccess++
}
}
@@ -161,6 +171,8 @@
stats.BookingCheckAvailabilityErrors++
continue
}
+ // Only test CreateBooking on available slots.
+ slots = append(slots, a)
stats.BookingCheckAvailabilitySuccess++
}
utils.LogFlow(logger, "Availability Check", "End")
@@ -172,9 +184,9 @@
var b []*mpb.Booking
if config.BookingBookFlow || config.BookingAllFlows {
utils.LogFlow(logger, "Booking", "Start")
- totalSlots := len(av)
+ totalSlots := len(slots)
logger.Printf("total slots %d", totalSlots)
- for i, a := range av {
+ for i, a := range slots {
logger.Printf("creating booking")
booking, err := api.CreateBooking(ctx, logger, a, conn)
if err != nil {
@@ -191,7 +203,7 @@
// ListBookings Flow
if config.BookingListFlow || config.BookingAllFlows || config.BookingCancelAllBookings {
if len(b) == 0 && !config.BookingCancelAllBookings {
- b = GenerateBookings(ctx, logger, av, stats, conn, config)
+ b = GenerateBookings(ctx, logger, slots, stats, conn, config)
}
utils.LogFlow(logger, "List Bookings", "Start")
if len(b) > 0 || config.BookingCancelAllBookings {
@@ -213,7 +225,7 @@
// GetBookingStatus Flow
if config.BookingStatusFlow || config.BookingAllFlows {
if len(b) == 0 {
- b = GenerateBookings(ctx, logger, av, stats, conn, config)
+ b = GenerateBookings(ctx, logger, slots, stats, conn, config)
}
utils.LogFlow(logger, "BookingStatus", "Start")
diff --git a/proto/v3.proto b/proto/v3.proto
index 2a13f93..442dbc7 100644
--- a/proto/v3.proto
+++ b/proto/v3.proto
@@ -171,8 +171,17 @@
OrderFulfillability fulfillability = 1;
// Total processing fees & taxes that need to be paid for this order.
- // (required)
+ // (required) This field will be deprecated; new users should populate fees
+ // instead.
Price fees_and_taxes = 2;
+
+ // Breakdown of the specific per-ticket and per-order fees and taxes.
+ Fees fees = 3;
+
+ // Time at which the cart will expire and its contents will no longer be
+ // available, in unix epoch time (optional).
+ // If not set, a default value will be used and the cart will not expire.
+ int64 cart_expiration_sec = 4;
}
// GetBookingStatus method
@@ -455,9 +464,6 @@
DECLINED_BY_MERCHANT = 7;
}
-// [START_EXCLUDE]
-// Not ready to release to partners
-
// Information about payment failures.
message PaymentFailureInformation {
// Parameters requesting that RwG perform a 3DS1 challenge.
@@ -467,11 +473,14 @@
// The URL from which to load a form to present to the User for
// authentication.
string acs_url = 1;
- // A PaymentAuthentication Request. To be posted to the ACSUrl form.
+ // A PaymentAuthentication Request. To be posted to the ACSUrl form if
+ // supplied.
string pa_req = 2;
// An identifier used by the ACS provider. To be posted to the ACSUrl
- // form.
+ // form if supplied.
string transaction_id = 3;
+ // Merchant data. To be posted to the ACSUrl form if supplied.
+ string md_merchant_data = 4;
}
// Parameters used by a RwG aggregator to initiate a 3DS1 authentication
@@ -479,7 +488,6 @@
// {Booking|Order}Failure.cause is set to PAYMENT_REQUIRES_3DS1.
ThreeDS1Parameters threeds1_parameters = 5;
}
-// [END_EXCLUDE]
// BookingFailure specification
@@ -524,19 +532,15 @@
BOOKING_NOT_CANCELLABLE = 11;
// User has an existing reservation too close to this time.
OVERLAPPING_RESERVATION = 12;
- // [START_EXCLUDE]
- // Not ready to release to partners
-
- // Set when payment is rejected payment because you are requesting that the
+ // Set when payment is rejected because you are requesting that the
// transaction be tried again, but this time after undergoing 3DS1
// challenge/response. Note that the current transaction's failure state
// will stay failed. The retry will be completely separate.
//
// When this is the failure reason, payment_failure.3DS1_parameters
// MUST be set. If it is not, then the current cause will be treated as
- // if it were AGGREGATOR_PAYMENT_ERROR.
+ // if it were PAYMENT_ERROR.
PAYMENT_REQUIRES_3DS1 = 15;
- // [END_EXCLUDE]
}
// The reason why the booking failed. (required)
Cause cause = 1;
@@ -548,12 +552,8 @@
// information for debugging purpose only. (optional)
string description = 3;
- // [START_EXCLUDE]
- // Not ready to release to partners
-
// Details about payment failures.
PaymentFailureInformation payment_failure = 4;
- // [END_EXCLUDE]
}
// Used when booking/order failure cause is PAYMENT_ERROR_CARD_TYPE_REJECTED to
@@ -621,7 +621,7 @@
// against price changes. In CreateOrderResponse and
// CheckOrderFulfillabilityResponse, the price should be updated to the
// correct value if the value from the request was incorrect or outdated.
- // (reqired)
+ // (required)
Price price = 5;
// Status of the Line Item. (required in CreateOrderResponse and
@@ -648,19 +648,17 @@
// Use this value to indicate a general payment related error, only if the
// error does not match to a specific payment error above.
PAYMENT_ERROR = 4;
- // [START_EXCLUDE]
- // Not ready to release to partners
-
- // Set when payment is rejected payment because you are requesting that the
+ // Set when payment is rejected because you are requesting that the
// transaction be tried again, but this time after undergoing 3DS1
// challenge/response. Note that the current transaction's failure state
// will stay failed. The retry will be completely separate.
//
// When this is the failure reason, payment_failure.3DS1_parameters
// MUST be set. If it is not, then the current cause will be treated as
- // if it were AGGREGATOR_PAYMENT_ERROR.
+ // if it were PAYMENT_ERROR.
PAYMENT_REQUIRES_3DS1 = 5;
- // [END_EXCLUDE]
+ // The fee total in the request is incorrect or not up-to-date.
+ INCORRECT_FEE_TOTAL = 6;
}
// The reason why the order failed. (required)
Cause cause = 1;
@@ -675,12 +673,8 @@
// information for debugging purpose only. (optional)
string description = 4;
- // [START_EXCLUDE]
- // Not ready to release to partners
-
// Details about payment failures.
PaymentFailureInformation payment_failure = 5;
- // [END_EXCLUDE]
}
// OrderFulfillability specification
@@ -732,6 +726,9 @@
// The line item cannot be fulfilled for reasons that do not fall into
// the categories above.
ITEM_UNFULFILLABLE_OTHER_REASON = 5;
+ // The line item cannot be fulfilled since the number of tickets is less
+ // than the min ticket count specififed by the partner.
+ TICKET_CONSTRAINT_VIOLATED = 7;
}
// (required)
ItemFulfillabilityResult result = 2;
@@ -752,6 +749,37 @@
// for this slot with up-to-date prices should be listed without omitting any.
// (optional)
repeated TicketType ticket_type = 5;
+ // This proto will represent all the constraints violated by the user.
+ // Below are all the ways in which a violated_constraint can be represented.
+ //
+ // 1 : Constraint violation for the entire line item.
+ // { violated_ticket_constraint : { min_ticket_count : 5 } }
+ //
+ // 2 : Constraint violation for a ticket type within a line item.
+ // { violated_ticket_constraint : { min_ticket_count : 5, ticket_id : "ttd1"}}
+ //
+ // 3 : Constraint violation for multiple ticket types within a line item.
+ // { violated_ticket_constraint : { min_ticket_count : 3, ticket_id : "ttd1"}}
+ // { violated_ticket_constraint : { min_ticket_count : 4, ticket_id : "ttd2"}}
+ //
+ // 4 : Constraint violation for entire line item as well as an override
+ // for multiple ticket types within the availability slot.
+ // { violated_ticket_constraint : { min_ticket_count : 8 } }
+ // { violated_ticket_constraint : { min_ticket_count : 3, ticket_id : "ttd1"}}
+ // { violated_ticket_constraint : { min_ticket_count : 4, ticket_id : "ttd2"}}
+ //
+ message ViolatedTicketConstraint {
+ oneof value {
+ int32 min_ticket_count = 1;
+ int32 max_ticket_count = 2;
+ }
+ reserved 3;
+ // The absence of ticket_type_ids indicates that this constraint applies to
+ // the entire line item.
+ string ticket_id = 4;
+ }
+ // This must be set if ItemFulfillabilityResult is TICKET_CONSTRAINT_VIOLATED.
+ repeated ViolatedTicketConstraint violated_ticket_constraint = 6;
}
// TicketType is used to differentiate among tickets with different prices
@@ -975,7 +1003,16 @@
// (2) the break down between taxes and fees is not available.
// (required when neither of the above holds)
Price tax_amount = 4;
-
+ // Additional fees associated with this transaction, if any.
+ //
+ // The use of this field should be consistent with other pricing related
+ // fields:
+ // - if a {price, tax, fees} breakdown is provided for service or
+ // availability, use the same breakdown {price, tax, fees} here.
+ // - if the price field for service or availability already includes taxes
+ // or fees, keep using price field to includes taxes or fees and avoid
+ // setting the tax_amount or fees fields here.
+ Price fees = 11;
// Who handles payment processing?
// If payment is processed by the partner, CreateBooking request will
// include additional parameters (PaymentProcessingParameters) indicating
@@ -1082,6 +1119,36 @@
PriceType fee_type = 3;
}
+// The specific partner-named fees that must be paid for each ticket the user
+// purchases.
+message SpecificPerTicketFee {
+ // ID of a ticket type.
+ string ticket_id = 1;
+ // A localized partner-provided name for this fee or tax.
+ string fee_name = 2;
+ // The amount of the fee or tax.
+ Price fee_amount = 3;
+}
+
+// The specific partner-named fees that must be paid once per order, regardless
+// of number of tickets.
+message SpecificPerOrderFee {
+ // A localized partner-provided name for this fee or tax.
+ string fee_name = 1;
+ // The amount of the fee or tax.
+ Price fee_amount = 2;
+}
+
+// Breakdown of the specific, partner-named per-ticket and per-order fees and
+// taxes.
+message Fees {
+ // Fees and taxes that must be paid for each ticket the user purchases.
+ repeated SpecificPerTicketFee per_ticket_fee = 1;
+ // Fees and taxes that must be paid once per order, regardless of the number
+ // of tickets purchased.
+ repeated SpecificPerOrderFee per_order_fee = 2;
+}
+
// A deposit that the user may be charged or have a hold on their credit card
// for.
message Deposit {
diff --git a/proto/waitlist.proto b/proto/waitlist.proto
index d432edc..7bac7e4 100644
--- a/proto/waitlist.proto
+++ b/proto/waitlist.proto
@@ -333,7 +333,7 @@
// Phone number of the user (required)
string telephone = 5;
- // Email address of the user (required)
+ // Email address of the user (optional)
string email = 6;
}
diff --git a/utils/utils.go b/utils/utils.go
index 03984b2..306c0d2 100644
--- a/utils/utils.go
+++ b/utils/utils.go
@@ -199,7 +199,7 @@
merchantServiceID := merchantService(service.GetMerchantId(), service.GetServiceId())
for _, ticket := range service.GetTicketType() {
// TicketType can't have an empty price message or ticket_type_id. If it does it's excluded from map.
- if ticket.GetPrice() == nil || len(ticket.GetTicketTypeId()) == 0 || cmp.Diff(fpb.Price{}, *ticket.GetPrice(), cmp.Comparer(proto.Equal)) == "" {
+ if ticket.GetPrice() == nil || len(ticket.GetTicketTypeId()) == 0 || cmp.Diff(&fpb.Price{}, ticket.GetPrice(), cmp.Comparer(proto.Equal)) == "" {
continue
}
@@ -297,7 +297,7 @@
wantConfirmationMode = want.GetConfirmationMode()
wantComp.ConfirmationMode = mpb.ConfirmationMode_CONFIRMATION_MODE_UNSPECIFIED
}
- if diff := cmp.Diff(gotComp, wantComp, cmp.Comparer(proto.Equal)); diff != "" {
+ if diff := cmp.Diff(&gotComp, &wantComp, cmp.Comparer(proto.Equal)); diff != "" {
return diff
}
if (wantConfirmationMode == mpb.ConfirmationMode_CONFIRMATION_MODE_ASYNCHRONOUS) !=
@@ -383,13 +383,31 @@
// LineItems okay. Remove, free memory, and compare rest of proto.
want.Item = nil
got.Item = nil
- if diff := cmp.Diff(got, want, cmp.Comparer(proto.Equal)); diff != "" {
+ if diff := cmp.Diff(&got, &want, cmp.Comparer(proto.Equal)); diff != "" {
return fmt.Errorf("order protos differ. LineItems excluded, already validated. (-got +want)\n%s", diff)
}
return nil
}
+// AvailabilityToSlotTime converts an Availability object to SlotTime.
+func AvailabilityToSlotTime(a *fpb.Availability) *mpb.SlotTime {
+ slot := &mpb.SlotTime{
+ ServiceId: a.GetServiceId(),
+ StartSec: a.GetStartSec(),
+ DurationSec: a.GetDurationSec(),
+ AvailabilityTag: a.GetAvailabilityTag()}
+ if a.Resources != nil {
+ r := a.GetResources()
+ slot.ResourceIds = &mpb.ResourceIds{
+ StaffId: r.GetStaffId(),
+ RoomId: r.GetRoomId(),
+ PartySize: r.GetPartySize(),
+ }
+ }
+ return slot
+}
+
// ValidateOrders performs simple comparisons and set up before forwarding orders
// individually to ValidateOrder.
func ValidateOrders(got, want Orders) error {
@@ -470,26 +488,29 @@
// BuildSlotFrom creates a bookingservice slot from an feed availability record.
func BuildSlotFrom(a *fpb.Availability) (*mpb.Slot, error) {
- r := a.GetResources()
confirmationMode := mpb.ConfirmationMode_CONFIRMATION_MODE_UNSPECIFIED
if a.GetConfirmationMode() == fpb.Availability_CONFIRMATION_MODE_SYNCHRONOUS {
confirmationMode = mpb.ConfirmationMode_CONFIRMATION_MODE_SYNCHRONOUS
} else if a.GetConfirmationMode() == fpb.Availability_CONFIRMATION_MODE_ASYNCHRONOUS {
confirmationMode = mpb.ConfirmationMode_CONFIRMATION_MODE_ASYNCHRONOUS
}
- return &mpb.Slot{
+ slot := &mpb.Slot{
MerchantId: a.GetMerchantId(),
ServiceId: a.GetServiceId(),
StartSec: a.GetStartSec(),
DurationSec: a.GetDurationSec(),
AvailabilityTag: a.GetAvailabilityTag(),
ConfirmationMode: confirmationMode,
- Resources: &mpb.ResourceIds{
+ }
+ if a.Resources != nil {
+ r := a.GetResources()
+ slot.Resources = &mpb.ResourceIds{
StaffId: r.GetStaffId(),
RoomId: r.GetRoomId(),
PartySize: r.GetPartySize(),
- },
- }, nil
+ }
+ }
+ return slot, nil
}
// SplitAvailabilityByMerchant splits the list of availabilities by merchant. This is necessary if BatchAvailabilityLookup
@@ -506,26 +527,13 @@
func BuildBatchAvailabilityLookupRequestFrom(av []*fpb.Availability) (*mpb.BatchAvailabilityLookupRequest, error) {
var st []*mpb.SlotTime
var m string
- var s string
for _, a := range av {
if m == "" {
m = a.GetMerchantId()
- s = a.GetServiceId()
} else if m != a.GetMerchantId() {
return nil, fmt.Errorf("BuildBatchAvailabilityLookupRequestFrom failed, got multiple merchant ids: %s, %s", m, a.GetMerchantId())
}
- r := a.GetResources()
- st = append(st, &mpb.SlotTime{
- ServiceId: s,
- StartSec: a.GetStartSec(),
- DurationSec: a.GetDurationSec(),
- AvailabilityTag: a.GetAvailabilityTag(),
- ResourceIds: &mpb.ResourceIds{
- StaffId: r.GetStaffId(),
- RoomId: r.GetRoomId(),
- PartySize: r.GetPartySize(),
- },
- })
+ st = append(st, AvailabilityToSlotTime(a))
}
return &mpb.BatchAvailabilityLookupRequest{
MerchantId: m,
@@ -533,6 +541,26 @@
}, nil
}
+// BuildBatchAvailabilityLookupResponseFrom creates a BatchAvailabilityLookupResponse from a list of input availability slots.
+func BuildBatchAvailabilityLookupResponseFrom(av []*fpb.Availability) (*mpb.BatchAvailabilityLookupResponse, error) {
+ var sta []*mpb.SlotTimeAvailability
+ var m string
+ for _, a := range av {
+ if m == "" {
+ m = a.GetMerchantId()
+ } else if m != a.GetMerchantId() {
+ return nil, fmt.Errorf("BuildBatchAvailabilityLookupRequestFrom failed, got multiple merchant ids: %s, %s", m, a.GetMerchantId())
+ }
+ sta = append(sta, &mpb.SlotTimeAvailability{
+ Available: a.SpotsOpen > 0,
+ SlotTime: AvailabilityToSlotTime(a),
+ })
+ }
+ return &mpb.BatchAvailabilityLookupResponse{
+ SlotTimeAvailability: sta,
+ }, nil
+}
+
// BuildMerchantServiceMap creates a key value pair of unique services to all of their availability slots.
func BuildMerchantServiceMap(av []*fpb.Availability) map[SlotKey][]*fpb.Availability {
m := make(map[SlotKey][]*fpb.Availability)
diff --git a/v3/v3.pb.go b/v3/v3.pb.go
index c81074c..fd3fb2d 100644
--- a/v3/v3.pb.go
+++ b/v3/v3.pb.go
@@ -338,15 +338,6 @@
BookingFailure_BOOKING_NOT_CANCELLABLE BookingFailure_Cause = 11
// User has an existing reservation too close to this time.
BookingFailure_OVERLAPPING_RESERVATION BookingFailure_Cause = 12
- // Set when payment is rejected payment because you are requesting that the
- // transaction be tried again, but this time after undergoing 3DS1
- // challenge/response. Note that the current transaction's failure state
- // will stay failed. The retry will be completely separate.
- //
- // When this is the failure reason, payment_failure.3DS1_parameters
- // MUST be set. If it is not, then the current cause will be treated as
- // if it were AGGREGATOR_PAYMENT_ERROR.
- BookingFailure_PAYMENT_REQUIRES_3DS1 BookingFailure_Cause = 15
)
var BookingFailure_Cause_name = map[int32]string{
@@ -363,7 +354,6 @@
10: "BOOKING_ALREADY_CANCELLED",
11: "BOOKING_NOT_CANCELLABLE",
12: "OVERLAPPING_RESERVATION",
- 15: "PAYMENT_REQUIRES_3DS1",
}
var BookingFailure_Cause_value = map[string]int32{
@@ -380,7 +370,6 @@
"BOOKING_ALREADY_CANCELLED": 10,
"BOOKING_NOT_CANCELLABLE": 11,
"OVERLAPPING_RESERVATION": 12,
- "PAYMENT_REQUIRES_3DS1": 15,
}
func (x BookingFailure_Cause) String() string {
@@ -388,7 +377,7 @@
}
func (BookingFailure_Cause) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{28, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{27, 0}
}
type OrderFailure_Cause int32
@@ -409,15 +398,6 @@
// Use this value to indicate a general payment related error, only if the
// error does not match to a specific payment error above.
OrderFailure_PAYMENT_ERROR OrderFailure_Cause = 4
- // Set when payment is rejected payment because you are requesting that the
- // transaction be tried again, but this time after undergoing 3DS1
- // challenge/response. Note that the current transaction's failure state
- // will stay failed. The retry will be completely separate.
- //
- // When this is the failure reason, payment_failure.3DS1_parameters
- // MUST be set. If it is not, then the current cause will be treated as
- // if it were AGGREGATOR_PAYMENT_ERROR.
- OrderFailure_PAYMENT_REQUIRES_3DS1 OrderFailure_Cause = 5
)
var OrderFailure_Cause_name = map[int32]string{
@@ -426,7 +406,6 @@
2: "PAYMENT_ERROR_CARD_TYPE_REJECTED",
3: "PAYMENT_ERROR_CARD_DECLINED",
4: "PAYMENT_ERROR",
- 5: "PAYMENT_REQUIRES_3DS1",
}
var OrderFailure_Cause_value = map[string]int32{
@@ -435,7 +414,6 @@
"PAYMENT_ERROR_CARD_TYPE_REJECTED": 2,
"PAYMENT_ERROR_CARD_DECLINED": 3,
"PAYMENT_ERROR": 4,
- "PAYMENT_REQUIRES_3DS1": 5,
}
func (x OrderFailure_Cause) String() string {
@@ -443,7 +421,7 @@
}
func (OrderFailure_Cause) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{31, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{30, 0}
}
// The result of an order fulfillability check.
@@ -485,7 +463,7 @@
}
func (OrderFulfillability_OrderFulfillabilityResult) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{32, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{31, 0}
}
// The result of a line item fulfillability check.
@@ -534,7 +512,7 @@
}
func (LineItemFulfillability_ItemFulfillabilityResult) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{33, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{32, 0}
}
// Control how much billing information to include in the
@@ -567,7 +545,7 @@
}
func (TokenizationConfig_BillingInformationFormat) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{36, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{35, 0}
}
type PaymentProcessingParameters_PaymentProcessor int32
@@ -595,7 +573,7 @@
}
func (PaymentProcessingParameters_PaymentProcessor) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{37, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{36, 0}
}
// Who handles payment processing?
@@ -627,7 +605,7 @@
}
func (PaymentInformation_PaymentProcessedBy) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{39, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{38, 0}
}
// Request to check availability for a Slot.
@@ -2240,116 +2218,6 @@
return nil
}
-// Information about payment failures.
-type PaymentFailureInformation struct {
- // Parameters used by a RwG aggregator to initiate a 3DS1 authentication
- // protocol with the user. Will be ignored unless
- // {Booking|Order}Failure.cause is set to PAYMENT_REQUIRES_3DS1.
- Threeds1Parameters *PaymentFailureInformation_ThreeDS1Parameters `protobuf:"bytes,5,opt,name=threeds1_parameters,json=threeds1Parameters,proto3" json:"threeds1_parameters,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *PaymentFailureInformation) Reset() { *m = PaymentFailureInformation{} }
-func (m *PaymentFailureInformation) String() string { return proto.CompactTextString(m) }
-func (*PaymentFailureInformation) ProtoMessage() {}
-func (*PaymentFailureInformation) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{27}
-}
-
-func (m *PaymentFailureInformation) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PaymentFailureInformation.Unmarshal(m, b)
-}
-func (m *PaymentFailureInformation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PaymentFailureInformation.Marshal(b, m, deterministic)
-}
-func (m *PaymentFailureInformation) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PaymentFailureInformation.Merge(m, src)
-}
-func (m *PaymentFailureInformation) XXX_Size() int {
- return xxx_messageInfo_PaymentFailureInformation.Size(m)
-}
-func (m *PaymentFailureInformation) XXX_DiscardUnknown() {
- xxx_messageInfo_PaymentFailureInformation.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PaymentFailureInformation proto.InternalMessageInfo
-
-func (m *PaymentFailureInformation) GetThreeds1Parameters() *PaymentFailureInformation_ThreeDS1Parameters {
- if m != nil {
- return m.Threeds1Parameters
- }
- return nil
-}
-
-// Parameters requesting that RwG perform a 3DS1 challenge.
-//
-// The parameters are set by EMVCo's description of the 3DS1 protocol.
-type PaymentFailureInformation_ThreeDS1Parameters struct {
- // The URL from which to load a form to present to the User for
- // authentication.
- AcsUrl string `protobuf:"bytes,1,opt,name=acs_url,json=acsUrl,proto3" json:"acs_url,omitempty"`
- // A PaymentAuthentication Request. To be posted to the ACSUrl form.
- PaReq string `protobuf:"bytes,2,opt,name=pa_req,json=paReq,proto3" json:"pa_req,omitempty"`
- // An identifier used by the ACS provider. To be posted to the ACSUrl
- // form.
- TransactionId string `protobuf:"bytes,3,opt,name=transaction_id,json=transactionId,proto3" json:"transaction_id,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
-}
-
-func (m *PaymentFailureInformation_ThreeDS1Parameters) Reset() {
- *m = PaymentFailureInformation_ThreeDS1Parameters{}
-}
-func (m *PaymentFailureInformation_ThreeDS1Parameters) String() string {
- return proto.CompactTextString(m)
-}
-func (*PaymentFailureInformation_ThreeDS1Parameters) ProtoMessage() {}
-func (*PaymentFailureInformation_ThreeDS1Parameters) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{27, 0}
-}
-
-func (m *PaymentFailureInformation_ThreeDS1Parameters) XXX_Unmarshal(b []byte) error {
- return xxx_messageInfo_PaymentFailureInformation_ThreeDS1Parameters.Unmarshal(m, b)
-}
-func (m *PaymentFailureInformation_ThreeDS1Parameters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
- return xxx_messageInfo_PaymentFailureInformation_ThreeDS1Parameters.Marshal(b, m, deterministic)
-}
-func (m *PaymentFailureInformation_ThreeDS1Parameters) XXX_Merge(src proto.Message) {
- xxx_messageInfo_PaymentFailureInformation_ThreeDS1Parameters.Merge(m, src)
-}
-func (m *PaymentFailureInformation_ThreeDS1Parameters) XXX_Size() int {
- return xxx_messageInfo_PaymentFailureInformation_ThreeDS1Parameters.Size(m)
-}
-func (m *PaymentFailureInformation_ThreeDS1Parameters) XXX_DiscardUnknown() {
- xxx_messageInfo_PaymentFailureInformation_ThreeDS1Parameters.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_PaymentFailureInformation_ThreeDS1Parameters proto.InternalMessageInfo
-
-func (m *PaymentFailureInformation_ThreeDS1Parameters) GetAcsUrl() string {
- if m != nil {
- return m.AcsUrl
- }
- return ""
-}
-
-func (m *PaymentFailureInformation_ThreeDS1Parameters) GetPaReq() string {
- if m != nil {
- return m.PaReq
- }
- return ""
-}
-
-func (m *PaymentFailureInformation_ThreeDS1Parameters) GetTransactionId() string {
- if m != nil {
- return m.TransactionId
- }
- return ""
-}
-
// 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.
@@ -2360,19 +2228,17 @@
RejectedCardType CreditCardType `protobuf:"varint,2,opt,name=rejected_card_type,json=rejectedCardType,proto3,enum=ext.maps.booking.partner.v3.CreditCardType" json:"rejected_card_type,omitempty"`
// This optional field is used for the partner to include additional
// information for debugging purpose only. (optional)
- Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
- // Details about payment failures.
- PaymentFailure *PaymentFailureInformation `protobuf:"bytes,4,opt,name=payment_failure,json=paymentFailure,proto3" json:"payment_failure,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ Description string `protobuf:"bytes,3,opt,name=description,proto3" json:"description,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
func (m *BookingFailure) Reset() { *m = BookingFailure{} }
func (m *BookingFailure) String() string { return proto.CompactTextString(m) }
func (*BookingFailure) ProtoMessage() {}
func (*BookingFailure) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{28}
+ return fileDescriptor_1820d8e1a9fad753, []int{27}
}
func (m *BookingFailure) XXX_Unmarshal(b []byte) error {
@@ -2414,13 +2280,6 @@
return ""
}
-func (m *BookingFailure) GetPaymentFailure() *PaymentFailureInformation {
- if m != nil {
- return m.PaymentFailure
- }
- return nil
-}
-
// An order for service appointments with a merchant.
type Order struct {
// ID of this Order, chosen by the booking partner who handles the order
@@ -2445,7 +2304,7 @@
func (m *Order) String() string { return proto.CompactTextString(m) }
func (*Order) ProtoMessage() {}
func (*Order) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{29}
+ return fileDescriptor_1820d8e1a9fad753, []int{28}
}
func (m *Order) XXX_Unmarshal(b []byte) error {
@@ -2532,7 +2391,7 @@
func (m *LineItem) String() string { return proto.CompactTextString(m) }
func (*LineItem) ProtoMessage() {}
func (*LineItem) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{30}
+ return fileDescriptor_1820d8e1a9fad753, []int{29}
}
func (m *LineItem) XXX_Unmarshal(b []byte) error {
@@ -2607,7 +2466,7 @@
func (m *LineItem_OrderedTickets) String() string { return proto.CompactTextString(m) }
func (*LineItem_OrderedTickets) ProtoMessage() {}
func (*LineItem_OrderedTickets) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{30, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{29, 0}
}
func (m *LineItem_OrderedTickets) XXX_Unmarshal(b []byte) error {
@@ -2653,19 +2512,17 @@
RejectedCardType CreditCardType `protobuf:"varint,3,opt,name=rejected_card_type,json=rejectedCardType,proto3,enum=ext.maps.booking.partner.v3.CreditCardType" json:"rejected_card_type,omitempty"`
// This optional field is used for the partner to include additional
// information for debugging purpose only. (optional)
- Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
- // Details about payment failures.
- PaymentFailure *PaymentFailureInformation `protobuf:"bytes,5,opt,name=payment_failure,json=paymentFailure,proto3" json:"payment_failure,omitempty"`
- XXX_NoUnkeyedLiteral struct{} `json:"-"`
- XXX_unrecognized []byte `json:"-"`
- XXX_sizecache int32 `json:"-"`
+ Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"`
+ XXX_NoUnkeyedLiteral struct{} `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+ XXX_sizecache int32 `json:"-"`
}
func (m *OrderFailure) Reset() { *m = OrderFailure{} }
func (m *OrderFailure) String() string { return proto.CompactTextString(m) }
func (*OrderFailure) ProtoMessage() {}
func (*OrderFailure) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{31}
+ return fileDescriptor_1820d8e1a9fad753, []int{30}
}
func (m *OrderFailure) XXX_Unmarshal(b []byte) error {
@@ -2714,13 +2571,6 @@
return ""
}
-func (m *OrderFailure) GetPaymentFailure() *PaymentFailureInformation {
- if m != nil {
- return m.PaymentFailure
- }
- return nil
-}
-
type OrderFulfillability struct {
Result OrderFulfillability_OrderFulfillabilityResult `protobuf:"varint,1,opt,name=result,proto3,enum=ext.maps.booking.partner.v3.OrderFulfillability_OrderFulfillabilityResult" json:"result,omitempty"`
// Fulfillability results of all line items in this order (required).
@@ -2737,7 +2587,7 @@
func (m *OrderFulfillability) String() string { return proto.CompactTextString(m) }
func (*OrderFulfillability) ProtoMessage() {}
func (*OrderFulfillability) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{32}
+ return fileDescriptor_1820d8e1a9fad753, []int{31}
}
func (m *OrderFulfillability) XXX_Unmarshal(b []byte) error {
@@ -2804,7 +2654,7 @@
func (m *LineItemFulfillability) String() string { return proto.CompactTextString(m) }
func (*LineItemFulfillability) ProtoMessage() {}
func (*LineItemFulfillability) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{33}
+ return fileDescriptor_1820d8e1a9fad753, []int{32}
}
func (m *LineItemFulfillability) XXX_Unmarshal(b []byte) error {
@@ -2879,7 +2729,7 @@
}
func (*LineItemFulfillability_UpdatedAvailability) ProtoMessage() {}
func (*LineItemFulfillability_UpdatedAvailability) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{33, 0}
+ return fileDescriptor_1820d8e1a9fad753, []int{32, 0}
}
func (m *LineItemFulfillability_UpdatedAvailability) XXX_Unmarshal(b []byte) error {
@@ -2968,7 +2818,7 @@
func (m *TicketType) String() string { return proto.CompactTextString(m) }
func (*TicketType) ProtoMessage() {}
func (*TicketType) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{34}
+ return fileDescriptor_1820d8e1a9fad753, []int{33}
}
func (m *TicketType) XXX_Unmarshal(b []byte) error {
@@ -3037,7 +2887,7 @@
func (m *ResourceIds) String() string { return proto.CompactTextString(m) }
func (*ResourceIds) ProtoMessage() {}
func (*ResourceIds) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{35}
+ return fileDescriptor_1820d8e1a9fad753, []int{34}
}
func (m *ResourceIds) XXX_Unmarshal(b []byte) error {
@@ -3098,7 +2948,7 @@
func (m *TokenizationConfig) String() string { return proto.CompactTextString(m) }
func (*TokenizationConfig) ProtoMessage() {}
func (*TokenizationConfig) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{36}
+ return fileDescriptor_1820d8e1a9fad753, []int{35}
}
func (m *TokenizationConfig) XXX_Unmarshal(b []byte) error {
@@ -3183,7 +3033,7 @@
func (m *PaymentProcessingParameters) String() string { return proto.CompactTextString(m) }
func (*PaymentProcessingParameters) ProtoMessage() {}
func (*PaymentProcessingParameters) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{37}
+ return fileDescriptor_1820d8e1a9fad753, []int{36}
}
func (m *PaymentProcessingParameters) XXX_Unmarshal(b []byte) error {
@@ -3286,7 +3136,7 @@
func (m *UserPaymentOption) String() string { return proto.CompactTextString(m) }
func (*UserPaymentOption) ProtoMessage() {}
func (*UserPaymentOption) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{38}
+ return fileDescriptor_1820d8e1a9fad753, []int{37}
}
func (m *UserPaymentOption) XXX_Unmarshal(b []byte) error {
@@ -3425,7 +3275,7 @@
func (m *PaymentInformation) String() string { return proto.CompactTextString(m) }
func (*PaymentInformation) ProtoMessage() {}
func (*PaymentInformation) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{39}
+ return fileDescriptor_1820d8e1a9fad753, []int{38}
}
func (m *PaymentInformation) XXX_Unmarshal(b []byte) error {
@@ -3569,7 +3419,7 @@
func (m *Price) String() string { return proto.CompactTextString(m) }
func (*Price) ProtoMessage() {}
func (*Price) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{40}
+ return fileDescriptor_1820d8e1a9fad753, []int{39}
}
func (m *Price) XXX_Unmarshal(b []byte) error {
@@ -3628,7 +3478,7 @@
func (m *NoShowFee) String() string { return proto.CompactTextString(m) }
func (*NoShowFee) ProtoMessage() {}
func (*NoShowFee) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{41}
+ return fileDescriptor_1820d8e1a9fad753, []int{40}
}
func (m *NoShowFee) XXX_Unmarshal(b []byte) error {
@@ -3681,7 +3531,7 @@
func (m *Deposit) String() string { return proto.CompactTextString(m) }
func (*Deposit) ProtoMessage() {}
func (*Deposit) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{42}
+ return fileDescriptor_1820d8e1a9fad753, []int{41}
}
func (m *Deposit) XXX_Unmarshal(b []byte) error {
@@ -3753,7 +3603,7 @@
func (m *Slot) String() string { return proto.CompactTextString(m) }
func (*Slot) ProtoMessage() {}
func (*Slot) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{43}
+ return fileDescriptor_1820d8e1a9fad753, []int{42}
}
func (m *Slot) XXX_Unmarshal(b []byte) error {
@@ -3847,7 +3697,7 @@
func (m *UserInformation) String() string { return proto.CompactTextString(m) }
func (*UserInformation) ProtoMessage() {}
func (*UserInformation) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{44}
+ return fileDescriptor_1820d8e1a9fad753, []int{43}
}
func (m *UserInformation) XXX_Unmarshal(b []byte) error {
@@ -3931,7 +3781,7 @@
func (m *PostalAddress) String() string { return proto.CompactTextString(m) }
func (*PostalAddress) ProtoMessage() {}
func (*PostalAddress) Descriptor() ([]byte, []int) {
- return fileDescriptor_1820d8e1a9fad753, []int{45}
+ return fileDescriptor_1820d8e1a9fad753, []int{44}
}
func (m *PostalAddress) XXX_Unmarshal(b []byte) error {
@@ -4030,8 +3880,6 @@
proto.RegisterType((*UpdateBookingRequest)(nil), "ext.maps.booking.partner.v3.UpdateBookingRequest")
proto.RegisterType((*UpdateBookingResponse)(nil), "ext.maps.booking.partner.v3.UpdateBookingResponse")
proto.RegisterType((*Booking)(nil), "ext.maps.booking.partner.v3.Booking")
- proto.RegisterType((*PaymentFailureInformation)(nil), "ext.maps.booking.partner.v3.PaymentFailureInformation")
- proto.RegisterType((*PaymentFailureInformation_ThreeDS1Parameters)(nil), "ext.maps.booking.partner.v3.PaymentFailureInformation.ThreeDS1Parameters")
proto.RegisterType((*BookingFailure)(nil), "ext.maps.booking.partner.v3.BookingFailure")
proto.RegisterType((*Order)(nil), "ext.maps.booking.partner.v3.Order")
proto.RegisterType((*LineItem)(nil), "ext.maps.booking.partner.v3.LineItem")
@@ -4058,249 +3906,240 @@
func init() { proto.RegisterFile("v3.proto", fileDescriptor_1820d8e1a9fad753) }
var fileDescriptor_1820d8e1a9fad753 = []byte{
- // 3891 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3b, 0x4b, 0x8c, 0xdb, 0x48,
- 0x76, 0xa6, 0x3e, 0x2d, 0xe9, 0xf5, 0x8f, 0x5d, 0xdd, 0xb6, 0xd5, 0x6d, 0x7b, 0xdc, 0xe6, 0x8c,
- 0x67, 0xbc, 0xf6, 0x4c, 0x4f, 0xfc, 0xd9, 0x64, 0x76, 0x91, 0x6c, 0x42, 0x49, 0x6c, 0x37, 0x3d,
- 0x6a, 0x51, 0x53, 0xa4, 0xfc, 0xd9, 0x43, 0xb8, 0xb4, 0x58, 0x6d, 0x33, 0x96, 0x44, 0x0d, 0x49,
- 0xf5, 0xba, 0x07, 0x3b, 0x87, 0x00, 0x8b, 0x1c, 0x36, 0xc8, 0x39, 0x48, 0x80, 0x1c, 0xf7, 0xb6,
- 0xb9, 0xe5, 0xb2, 0x48, 0x6e, 0x01, 0x16, 0x41, 0x80, 0x9c, 0x06, 0x01, 0x72, 0x0a, 0x90, 0x20,
- 0x87, 0x9c, 0x72, 0x0f, 0x90, 0x43, 0x50, 0x1f, 0x4a, 0x24, 0xa5, 0x56, 0xab, 0x7b, 0x3c, 0xb9,
- 0xe4, 0x26, 0xbe, 0x5f, 0xbd, 0x7a, 0xf5, 0xea, 0xbd, 0x57, 0xaf, 0x4a, 0x50, 0x3e, 0x7e, 0xb8,
- 0x37, 0x0c, 0xfc, 0xc8, 0x47, 0xd7, 0xc8, 0xdb, 0x68, 0xaf, 0xef, 0x0c, 0xc3, 0xbd, 0x97, 0xbe,
- 0xff, 0xc6, 0x1b, 0xbc, 0xda, 0x1b, 0x3a, 0x41, 0x34, 0x20, 0xc1, 0xde, 0xf1, 0x43, 0xe5, 0x0b,
- 0xa8, 0xd6, 0x5f, 0x93, 0xee, 0x1b, 0xf5, 0xd8, 0xf1, 0x7a, 0xce, 0x4b, 0xaf, 0xe7, 0x45, 0x27,
- 0x98, 0x7c, 0x39, 0x22, 0x61, 0x84, 0xbe, 0x0f, 0x85, 0xb0, 0xe7, 0x47, 0x55, 0x69, 0x57, 0xba,
- 0xb3, 0xfc, 0xe0, 0xd6, 0xde, 0x1c, 0x39, 0x7b, 0x66, 0xcf, 0x8f, 0x30, 0x23, 0x57, 0x7e, 0x51,
- 0x80, 0xed, 0x19, 0x32, 0xc3, 0xa1, 0x3f, 0x08, 0xc9, 0x05, 0x85, 0xa2, 0x8f, 0x60, 0xbd, 0xeb,
- 0x8f, 0x06, 0x91, 0xed, 0x70, 0xa1, 0x3d, 0x52, 0xcd, 0xed, 0x4a, 0x77, 0x8a, 0x78, 0x8d, 0x81,
- 0xd5, 0x18, 0x8a, 0x7e, 0x0f, 0xae, 0xf5, 0x9c, 0x30, 0xb2, 0xfd, 0x41, 0xcf, 0x1b, 0x10, 0xbb,
- 0xeb, 0x0c, 0xba, 0xa4, 0xc7, 0x50, 0x76, 0x48, 0xba, 0xd5, 0xe2, 0xae, 0x74, 0x27, 0x8f, 0xab,
- 0x94, 0xc4, 0x60, 0x14, 0xf5, 0x09, 0x81, 0x49, 0xba, 0xe8, 0x6b, 0xd8, 0x72, 0x47, 0x81, 0x13,
- 0x79, 0xfe, 0xc0, 0x0e, 0xc8, 0x97, 0x23, 0x2f, 0x20, 0x7d, 0x32, 0x88, 0xaa, 0xf9, 0x5d, 0xe9,
- 0xce, 0xda, 0x83, 0x27, 0x73, 0xd5, 0x3d, 0x75, 0xd2, 0x7b, 0x0d, 0x21, 0x12, 0x4f, 0x24, 0xe2,
- 0x4d, 0x77, 0x1a, 0x88, 0x7e, 0x02, 0x9b, 0x4e, 0x42, 0x80, 0x3d, 0x1a, 0xba, 0x4e, 0x44, 0xaa,
- 0x05, 0x66, 0xac, 0x4f, 0xe7, 0x8e, 0x9e, 0x1c, 0xb8, 0xc3, 0xd8, 0x30, 0x72, 0xa6, 0x60, 0x4a,
- 0x1f, 0x36, 0x67, 0x68, 0x83, 0x3e, 0x80, 0xdd, 0x46, 0x07, 0xab, 0x96, 0x6e, 0xb4, 0x6c, 0xac,
- 0x7d, 0xd1, 0xd1, 0xb1, 0x76, 0xa8, 0xb5, 0x2c, 0xbb, 0xd3, 0x32, 0xdb, 0x5a, 0x5d, 0xdf, 0xd7,
- 0xb5, 0x86, 0x7c, 0x09, 0x55, 0x61, 0xab, 0x61, 0xd8, 0x2d, 0xc3, 0xb2, 0xcd, 0x03, 0xe3, 0x99,
- 0x1d, 0x73, 0xc8, 0x12, 0xba, 0x02, 0xe8, 0xb0, 0x63, 0x66, 0xe1, 0x39, 0x65, 0x08, 0x68, 0x5a,
- 0x31, 0xf4, 0x63, 0xd8, 0xa0, 0xab, 0x6a, 0x27, 0xf5, 0xab, 0x4a, 0xbb, 0xf9, 0x3b, 0xcb, 0x0f,
- 0x3e, 0x39, 0xd3, 0x23, 0x52, 0x16, 0x96, 0xc3, 0x0c, 0x44, 0x09, 0x40, 0xce, 0x52, 0x7d, 0xd7,
- 0x4e, 0xa7, 0xfc, 0x9b, 0x04, 0x65, 0xca, 0x67, 0x79, 0x7d, 0x82, 0x6e, 0x00, 0x84, 0x24, 0x38,
- 0xf6, 0xba, 0xc4, 0xf6, 0x5c, 0xe6, 0x70, 0x15, 0x5c, 0x11, 0x10, 0xdd, 0x45, 0xd7, 0xa0, 0x12,
- 0x46, 0x4e, 0x10, 0x31, 0x77, 0x94, 0x98, 0x3b, 0x96, 0x19, 0x80, 0xba, 0xdf, 0x2d, 0x58, 0x19,
- 0xbb, 0x1f, 0xc5, 0xe7, 0x18, 0x7e, 0x39, 0x86, 0x51, 0x92, 0xef, 0x81, 0x9c, 0x72, 0x91, 0xc8,
- 0x79, 0xc5, 0xbc, 0xb3, 0x82, 0xd7, 0x93, 0x70, 0xcb, 0x79, 0x85, 0x3e, 0x87, 0x95, 0x80, 0x84,
- 0xfe, 0x28, 0x60, 0xaa, 0x84, 0xc2, 0x8d, 0xee, 0xcc, 0x9d, 0x3e, 0x16, 0x0c, 0xba, 0x1b, 0xe2,
- 0xe5, 0x60, 0xf2, 0xa1, 0xbc, 0x85, 0xad, 0x78, 0x8a, 0x29, 0xdb, 0xd6, 0xa0, 0xc2, 0xd6, 0x32,
- 0xf2, 0xfa, 0x44, 0x18, 0xf8, 0xf6, 0x99, 0x06, 0xa6, 0x52, 0x70, 0x39, 0x8c, 0x4d, 0x76, 0x1d,
- 0x2a, 0x69, 0x13, 0x97, 0xf1, 0x04, 0xa0, 0xfc, 0xa9, 0x04, 0xef, 0xd5, 0x9c, 0xa8, 0xfb, 0x3a,
- 0x39, 0x6e, 0xd3, 0xf7, 0xdf, 0x8c, 0x86, 0x71, 0xa8, 0xba, 0x09, 0xcb, 0x7d, 0x12, 0x74, 0x5f,
- 0x3b, 0x83, 0x88, 0x1a, 0x5d, 0x62, 0xf6, 0x80, 0x18, 0xa4, 0xbb, 0x69, 0x2d, 0xf3, 0xcc, 0xd3,
- 0xce, 0xab, 0xe5, 0x93, 0x42, 0x39, 0x27, 0xe7, 0x95, 0x5f, 0x48, 0x70, 0xf3, 0x54, 0x6d, 0x44,
- 0x90, 0x7b, 0x05, 0x57, 0xc6, 0xa3, 0xcd, 0x72, 0xf2, 0xfb, 0x0b, 0x0d, 0x9d, 0x72, 0xf4, 0xad,
- 0x70, 0x06, 0x54, 0xf9, 0x1a, 0x6e, 0xb2, 0xa8, 0x63, 0x04, 0x2e, 0x09, 0xf6, 0x47, 0xbd, 0x23,
- 0xaf, 0x97, 0x8d, 0xe2, 0x67, 0x9a, 0xe6, 0x07, 0x50, 0xf0, 0x22, 0xd2, 0xaf, 0xe6, 0x16, 0xb0,
- 0x4a, 0xd3, 0x1b, 0x10, 0x3d, 0x22, 0x7d, 0xcc, 0x58, 0x94, 0xdf, 0x48, 0xb0, 0x7b, 0xfa, 0xf8,
- 0xc2, 0x18, 0xcf, 0x61, 0xed, 0x28, 0x85, 0x11, 0x5e, 0xf2, 0x5b, 0x73, 0x47, 0x9a, 0x25, 0x31,
- 0x23, 0x07, 0x1d, 0xc0, 0xda, 0x11, 0x21, 0xa1, 0xed, 0x0c, 0x5c, 0x3b, 0x72, 0xde, 0x92, 0x90,
- 0xf9, 0xce, 0xf2, 0x03, 0x65, 0xae, 0xe4, 0x76, 0xe0, 0x75, 0x09, 0x5e, 0xa1, 0x9c, 0xea, 0xc0,
- 0xb5, 0x28, 0x9f, 0xf2, 0x19, 0x5c, 0x7d, 0x4c, 0xa2, 0x1a, 0x27, 0x36, 0x23, 0x27, 0x1a, 0x85,
- 0xb1, 0xfd, 0x6e, 0x00, 0x08, 0x21, 0x13, 0xf3, 0x55, 0x04, 0x44, 0x77, 0x95, 0xff, 0x94, 0xa0,
- 0x3a, 0xcd, 0x2a, 0xa6, 0x3e, 0x9f, 0x17, 0x7d, 0x01, 0x6b, 0x31, 0x3a, 0x64, 0x8c, 0x4c, 0xff,
- 0xb5, 0x07, 0x77, 0xe7, 0xea, 0x9f, 0x1e, 0x6a, 0xf5, 0x65, 0xf2, 0x93, 0x46, 0xd6, 0x61, 0x40,
- 0x86, 0xce, 0x09, 0x8d, 0xea, 0xb1, 0x54, 0x9e, 0xbc, 0x3e, 0x39, 0xc3, 0x2a, 0x31, 0x97, 0x10,
- 0x2c, 0x0f, 0x33, 0x10, 0xe5, 0x57, 0x05, 0xd8, 0xaa, 0x07, 0xc4, 0x89, 0x88, 0x50, 0xe1, 0xdb,
- 0x15, 0x0a, 0xe8, 0x00, 0x2a, 0x3d, 0xe2, 0x84, 0xc4, 0x0e, 0xc8, 0x91, 0x58, 0xb9, 0x7b, 0xf3,
- 0xbd, 0x8f, 0x52, 0x63, 0x72, 0x44, 0x02, 0x32, 0xe8, 0x12, 0x5c, 0xee, 0x89, 0x6f, 0xf4, 0x0c,
- 0xe4, 0x51, 0x48, 0x02, 0xdb, 0x1b, 0x1c, 0xf9, 0x41, 0x9f, 0x85, 0x4a, 0x36, 0xe9, 0xe5, 0x07,
- 0x1f, 0xcf, 0x15, 0xd8, 0x09, 0x49, 0xa0, 0x4f, 0x78, 0xf0, 0xfa, 0x28, 0x0d, 0xa0, 0xf9, 0x38,
- 0xb6, 0x65, 0x52, 0xf6, 0x22, 0xf9, 0xb8, 0xcd, 0xf9, 0x92, 0xe2, 0xd1, 0x70, 0x0a, 0x86, 0x7e,
- 0x06, 0x37, 0xe2, 0x11, 0x86, 0x81, 0xdf, 0x25, 0x61, 0x48, 0xdd, 0x61, 0xe8, 0x04, 0x4e, 0x9f,
- 0x44, 0x24, 0x08, 0x59, 0x02, 0x59, 0x7e, 0xf0, 0xd9, 0x22, 0x63, 0xb5, 0xc7, 0x02, 0xda, 0x63,
- 0x7e, 0x7c, 0x6d, 0x78, 0x3a, 0x12, 0xdd, 0x83, 0x0d, 0xcf, 0x25, 0xfd, 0xa1, 0x1f, 0x91, 0x41,
- 0xf7, 0xc4, 0x8e, 0xfc, 0x37, 0x64, 0x50, 0x5d, 0x62, 0x7e, 0x2a, 0x27, 0x10, 0x16, 0x85, 0xa3,
- 0x4f, 0x00, 0x39, 0xae, 0xeb, 0x51, 0xb5, 0x9d, 0x1e, 0xab, 0x8e, 0x48, 0x18, 0x55, 0x4b, 0x8c,
- 0x7a, 0x63, 0x82, 0x11, 0x5e, 0xa1, 0xfc, 0x59, 0x0e, 0x2e, 0x67, 0xdc, 0x45, 0x6c, 0x8b, 0x1f,
- 0x41, 0x49, 0x4c, 0x42, 0xb8, 0xcc, 0x07, 0x8b, 0x38, 0x3c, 0x8e, 0x99, 0xd0, 0x1f, 0xc2, 0x26,
- 0x5b, 0xee, 0xd8, 0x70, 0xfe, 0x90, 0xad, 0x0a, 0x77, 0xa1, 0xbd, 0x33, 0x57, 0x5c, 0x58, 0xcb,
- 0x60, 0x5c, 0x78, 0x63, 0x94, 0x05, 0x21, 0x0b, 0xd6, 0xe3, 0x7d, 0x79, 0xe4, 0x78, 0xbd, 0x51,
- 0x40, 0x84, 0x37, 0xdd, 0x5b, 0x44, 0xcf, 0x7d, 0xce, 0x82, 0xe3, 0xbd, 0x2d, 0xbe, 0x95, 0x16,
- 0x20, 0x6e, 0x0e, 0xe1, 0xc6, 0x7c, 0xef, 0x7c, 0x06, 0x45, 0xe6, 0xc6, 0xc2, 0x12, 0xca, 0x02,
- 0x1b, 0x80, 0x33, 0x28, 0xbf, 0x94, 0x60, 0x33, 0x25, 0x50, 0x58, 0xf7, 0xc2, 0x12, 0x67, 0xcd,
- 0x3b, 0xf7, 0xed, 0xe7, 0xfd, 0xb7, 0x12, 0x14, 0xd9, 0x30, 0x68, 0x1b, 0xf8, 0x96, 0x9d, 0x04,
- 0xc3, 0x12, 0xfb, 0xd6, 0xdd, 0x71, 0x08, 0xc9, 0x9d, 0x2f, 0x84, 0xdc, 0x86, 0x35, 0xe6, 0x09,
- 0x41, 0x1c, 0x14, 0x44, 0x29, 0xb4, 0x4a, 0xa1, 0xe3, 0x48, 0x81, 0x7e, 0x00, 0xdb, 0x7c, 0x60,
- 0xf2, 0x76, 0xe8, 0x89, 0xf2, 0x8a, 0xe5, 0x66, 0x5a, 0x63, 0x15, 0x58, 0x8d, 0x75, 0x85, 0x11,
- 0x68, 0x63, 0x3c, 0x4d, 0xb5, 0x26, 0xe9, 0x2a, 0xf7, 0x60, 0x2d, 0x1d, 0x76, 0xe6, 0xcc, 0x42,
- 0xf9, 0x6f, 0x29, 0x5e, 0x63, 0x96, 0xbe, 0x12, 0x6b, 0xec, 0xd3, 0xef, 0x85, 0x56, 0x84, 0x73,
- 0x72, 0x86, 0xb3, 0xa3, 0x43, 0xee, 0xff, 0x3c, 0x3a, 0xe4, 0x67, 0x47, 0x07, 0xe5, 0xaf, 0xc7,
- 0xee, 0x28, 0xe6, 0x2e, 0xdc, 0xf1, 0x87, 0xe7, 0x9e, 0xfc, 0xc1, 0xa5, 0x78, 0xfa, 0x6d, 0x58,
- 0x65, 0x3f, 0x32, 0xee, 0xf8, 0xbd, 0x05, 0x2a, 0x07, 0xce, 0x70, 0x70, 0x09, 0xaf, 0xf8, 0x89,
- 0xef, 0x5a, 0x19, 0x96, 0x02, 0x12, 0x8e, 0x7a, 0x91, 0xb2, 0x07, 0x9b, 0x4d, 0x2f, 0x8c, 0x13,
- 0xf7, 0x38, 0xdd, 0x5f, 0x85, 0x12, 0x4f, 0x25, 0xf1, 0xe2, 0x2e, 0xb1, 0x9c, 0xe0, 0x2a, 0xcf,
- 0x61, 0x2b, 0x4d, 0x2f, 0xe6, 0xf7, 0x07, 0x50, 0x16, 0x4a, 0x84, 0xa2, 0xba, 0x5b, 0x2c, 0x9a,
- 0x8d, 0xb9, 0x94, 0xbf, 0x91, 0x60, 0x83, 0x8a, 0x66, 0x8a, 0x8f, 0x15, 0xd9, 0xce, 0x28, 0x72,
- 0x70, 0x29, 0x56, 0x05, 0x3d, 0x85, 0x0a, 0x37, 0x0b, 0x2d, 0xea, 0xb9, 0x49, 0x7e, 0xe7, 0x8c,
- 0xb2, 0x2d, 0x23, 0x9d, 0x1b, 0x49, 0x77, 0xc3, 0x83, 0x4b, 0xb8, 0xec, 0x8b, 0xdf, 0x3b, 0xb7,
- 0xa1, 0x1c, 0xc3, 0xa9, 0x97, 0xc7, 0x63, 0xb0, 0x69, 0x55, 0x70, 0x49, 0xd0, 0xd5, 0x8a, 0x90,
- 0xf7, 0xdc, 0x90, 0xc6, 0xb3, 0xa4, 0xdc, 0x49, 0xf4, 0x89, 0x97, 0x3b, 0x7f, 0x2e, 0x5f, 0x57,
- 0x9e, 0xc2, 0x16, 0x3f, 0x1e, 0x66, 0xaa, 0x8b, 0x6f, 0x99, 0x2d, 0x58, 0x1e, 0xca, 0x08, 0xfe,
- 0x7f, 0x9d, 0x87, 0xfe, 0x35, 0x07, 0x25, 0x41, 0x72, 0x56, 0x81, 0x7a, 0xc1, 0xa8, 0xfc, 0x9d,
- 0x95, 0x63, 0x35, 0x58, 0x12, 0x25, 0x6d, 0xe1, 0xdc, 0x85, 0xb2, 0xe0, 0x3c, 0xad, 0xa4, 0x2b,
- 0xbe, 0xb3, 0x92, 0x4e, 0xf9, 0x79, 0x0e, 0xb6, 0x05, 0xa9, 0xb0, 0x79, 0x72, 0x0e, 0x5f, 0xc1,
- 0x66, 0xf4, 0x3a, 0x20, 0xc4, 0x0d, 0xef, 0x4f, 0x97, 0x79, 0xfa, 0x22, 0xe3, 0x4f, 0x0b, 0xdd,
- 0xb3, 0xa8, 0xc4, 0x86, 0x79, 0x3f, 0x11, 0xd9, 0x51, 0x3c, 0xca, 0x04, 0xb6, 0xf3, 0x06, 0xd0,
- 0x34, 0x25, 0x0d, 0x79, 0x4e, 0x37, 0xb4, 0x47, 0x41, 0x2f, 0x0e, 0x79, 0x4e, 0x37, 0xec, 0x04,
- 0x3d, 0x74, 0x19, 0x96, 0x86, 0x0e, 0x2d, 0xf4, 0x98, 0x03, 0x54, 0x70, 0x71, 0xe8, 0x60, 0xf2,
- 0x25, 0x4d, 0xba, 0x51, 0xe0, 0x0c, 0x42, 0xa7, 0xcb, 0x12, 0xa9, 0xe7, 0xc6, 0x49, 0x37, 0x01,
- 0xd5, 0x5d, 0xe5, 0x9b, 0x22, 0xac, 0xa5, 0x5d, 0x11, 0x3d, 0x86, 0x62, 0xd7, 0x19, 0x89, 0xd2,
- 0x64, 0xed, 0x8c, 0x63, 0x70, 0x9a, 0x77, 0xaf, 0x4e, 0x19, 0x31, 0xe7, 0x47, 0x2f, 0x00, 0x05,
- 0xe4, 0x8f, 0x48, 0x37, 0x22, 0xae, 0xdd, 0x75, 0x02, 0xd7, 0x8e, 0x4e, 0x86, 0x44, 0x9c, 0x9e,
- 0xe6, 0x6f, 0x8e, 0x7a, 0x40, 0x5c, 0x2f, 0xaa, 0x3b, 0x81, 0x6b, 0x9d, 0x0c, 0x09, 0x96, 0x63,
- 0x31, 0x31, 0x04, 0xed, 0xc2, 0xb2, 0x4b, 0xc2, 0x6e, 0xe0, 0x0d, 0xc7, 0x7e, 0x5b, 0xc1, 0x49,
- 0x10, 0xb2, 0x61, 0x3d, 0xf6, 0xa0, 0x78, 0x5b, 0xf2, 0x03, 0xc1, 0x6f, 0x5f, 0x6c, 0xf5, 0xf0,
- 0xda, 0x30, 0x85, 0x52, 0xfe, 0x22, 0x0f, 0x45, 0x36, 0x5d, 0x74, 0x19, 0x36, 0xea, 0x6a, 0xc7,
- 0xd4, 0x32, 0x7d, 0xb8, 0x2d, 0x90, 0xcd, 0xa6, 0x61, 0xd9, 0x9d, 0x96, 0xfa, 0x54, 0xd5, 0x9b,
- 0x6a, 0xad, 0xa9, 0xc9, 0x12, 0xba, 0x09, 0xd7, 0x18, 0x54, 0x6d, 0x62, 0x4d, 0x6d, 0xbc, 0xb0,
- 0x6b, 0x86, 0xf1, 0xb9, 0xd6, 0xb0, 0x6b, 0x2f, 0xec, 0x8e, 0xa9, 0x61, 0x39, 0x87, 0x36, 0x60,
- 0xb5, 0xa9, 0xa9, 0xa6, 0x66, 0x6b, 0xcf, 0xdb, 0x3a, 0xd6, 0x1a, 0x72, 0x9e, 0xf2, 0x18, 0x1d,
- 0xcb, 0xd4, 0x1b, 0x9a, 0x5d, 0x57, 0x5b, 0x75, 0xad, 0xd9, 0xe4, 0x3d, 0xc0, 0x67, 0x7a, 0xab,
- 0x61, 0x3c, 0x93, 0x0b, 0xe8, 0x03, 0xd8, 0x6d, 0xab, 0x2f, 0x58, 0x2f, 0x50, 0xc3, 0xd8, 0xc0,
- 0x76, 0x5d, 0xc5, 0x0d, 0xdb, 0x7a, 0xd1, 0xd6, 0x6c, 0xac, 0x3d, 0xd1, 0xea, 0x96, 0xd6, 0x90,
- 0x8b, 0x54, 0xcc, 0x0c, 0xaa, 0x86, 0x56, 0x6f, 0xea, 0x2d, 0xad, 0x21, 0x2f, 0xa1, 0xeb, 0x50,
- 0x8d, 0x09, 0x8c, 0x36, 0x1b, 0xa1, 0x65, 0x58, 0xf6, 0x53, 0xb5, 0xa9, 0x37, 0xe4, 0x12, 0x55,
- 0x2c, 0xc5, 0x2e, 0x97, 0x91, 0x02, 0xef, 0x51, 0xad, 0xa9, 0x56, 0x94, 0x92, 0xda, 0x20, 0x2d,
- 0x40, 0xae, 0xa0, 0x1b, 0xb0, 0x4d, 0xe7, 0xa8, 0xb7, 0x1e, 0x8f, 0xe7, 0x2c, 0x26, 0xa1, 0x35,
- 0x64, 0x40, 0xd7, 0xe0, 0x6a, 0x8c, 0xa6, 0x22, 0xe2, 0xf9, 0x51, 0x63, 0x2d, 0x53, 0xa4, 0xf1,
- 0x54, 0xc3, 0x4d, 0xb5, 0xdd, 0xa6, 0x04, 0x58, 0x33, 0x35, 0xfc, 0x94, 0x77, 0x2d, 0x57, 0xd0,
- 0x36, 0x5c, 0x8e, 0x07, 0x13, 0xcd, 0x50, 0xd3, 0x7e, 0xd8, 0x30, 0xef, 0xcb, 0xeb, 0xca, 0xaf,
- 0x73, 0x50, 0x64, 0x69, 0x2b, 0x93, 0x21, 0xa5, 0x44, 0x86, 0x9c, 0x19, 0x00, 0x73, 0xdf, 0xe1,
- 0x79, 0x34, 0xff, 0xee, 0xce, 0xa3, 0x99, 0x76, 0x51, 0xe1, 0xd4, 0x76, 0x51, 0xf1, 0xfc, 0xed,
- 0xa2, 0xff, 0xc9, 0x41, 0x39, 0x06, 0x65, 0xda, 0xa4, 0xd2, 0xdc, 0x36, 0x69, 0xee, 0x8c, 0x36,
- 0x69, 0x7e, 0xba, 0x4d, 0xda, 0x82, 0x52, 0xe4, 0x75, 0xdf, 0x90, 0x88, 0xe6, 0x0a, 0xaa, 0xe9,
- 0xa3, 0x85, 0x34, 0xe5, 0x25, 0x09, 0x71, 0x2d, 0xce, 0x8b, 0x63, 0x21, 0xb4, 0xae, 0x19, 0x06,
- 0x5e, 0x97, 0x88, 0x40, 0xbd, 0x48, 0x8b, 0x89, 0x33, 0x24, 0x92, 0xd6, 0xd2, 0x45, 0x93, 0xd6,
- 0x4e, 0x1d, 0xd6, 0xd2, 0x8a, 0x51, 0xfb, 0x70, 0xd5, 0x26, 0xd6, 0x2b, 0x73, 0x80, 0xee, 0xa2,
- 0x2d, 0x28, 0xb2, 0x0e, 0xb5, 0x68, 0x57, 0xf3, 0x0f, 0xe5, 0xef, 0x0a, 0xb0, 0x92, 0x2c, 0x8e,
- 0x91, 0x96, 0x0e, 0xc7, 0x9f, 0x2e, 0x5c, 0x56, 0xa7, 0x83, 0xf1, 0x74, 0x83, 0x2f, 0xf7, 0x8e,
- 0x1a, 0x7c, 0xb3, 0xc3, 0x7c, 0xfe, 0x3b, 0x08, 0xf3, 0x85, 0x85, 0xc2, 0x7c, 0xf1, 0x9d, 0x86,
- 0xf9, 0x5f, 0x49, 0x67, 0x84, 0xf9, 0xab, 0xb0, 0x69, 0xe0, 0x86, 0x86, 0xed, 0x4e, 0x6b, 0xbf,
- 0xd3, 0xdc, 0xd7, 0x9b, 0x71, 0xa4, 0x5f, 0x24, 0x28, 0xe7, 0xce, 0x0a, 0xca, 0xf9, 0xe9, 0xb0,
- 0x5b, 0x38, 0x3d, 0xf2, 0x15, 0x95, 0x7f, 0xc9, 0xc3, 0xe6, 0x8c, 0x45, 0x43, 0x2f, 0xe3, 0x23,
- 0x95, 0x70, 0xa3, 0x27, 0xe7, 0x5d, 0xf6, 0xbd, 0xd9, 0xdd, 0xe3, 0x51, 0x2f, 0xc2, 0x42, 0x32,
- 0x72, 0x61, 0x93, 0x46, 0x10, 0x7b, 0xca, 0xcf, 0xe8, 0xce, 0x7e, 0xb8, 0xd0, 0xce, 0xce, 0xc8,
- 0x47, 0xde, 0x14, 0x0c, 0xdd, 0x87, 0xad, 0xd1, 0x60, 0x3c, 0x44, 0x8f, 0xd8, 0x01, 0x71, 0xc2,
- 0x71, 0x0d, 0xb0, 0x99, 0xc2, 0x61, 0x86, 0x52, 0xfe, 0x5e, 0x82, 0xed, 0x53, 0xd5, 0x47, 0xf7,
- 0xe0, 0x23, 0xbe, 0x80, 0xe3, 0xe5, 0xd3, 0x9b, 0xba, 0xf5, 0x82, 0x66, 0x9b, 0x4e, 0x33, 0x7b,
- 0xb9, 0xb6, 0x0e, 0xcb, 0x75, 0xb5, 0x15, 0x93, 0xca, 0x12, 0x4d, 0x51, 0xa9, 0x85, 0xb7, 0xe9,
- 0xba, 0xd9, 0xba, 0xa5, 0x1d, 0xca, 0x39, 0x74, 0x1b, 0x6e, 0xa5, 0x91, 0x34, 0x7f, 0xe9, 0x75,
- 0xcd, 0xae, 0x1b, 0x87, 0x35, 0xbd, 0xc5, 0x33, 0x59, 0x9e, 0x7a, 0xca, 0x0c, 0x17, 0xb2, 0x0d,
- 0xeb, 0x40, 0xc3, 0x36, 0xd6, 0x54, 0xd3, 0x68, 0xc9, 0x05, 0xe5, 0x1f, 0x8b, 0x70, 0x65, 0xb6,
- 0x9d, 0xc6, 0xe1, 0x7e, 0x91, 0x9b, 0x9d, 0x74, 0xb8, 0x47, 0xee, 0xd8, 0x31, 0x78, 0x61, 0xd6,
- 0xbc, 0xc0, 0x3a, 0xed, 0xcd, 0x58, 0xba, 0xb4, 0x6b, 0x9c, 0x7f, 0xd1, 0xd0, 0x1b, 0x58, 0x49,
- 0x5d, 0xca, 0xf0, 0xea, 0xed, 0xf1, 0x45, 0xd4, 0xe3, 0x07, 0x4b, 0x37, 0x75, 0x55, 0x93, 0x12,
- 0x8e, 0x0e, 0x60, 0x59, 0x04, 0x6a, 0x16, 0xbc, 0x78, 0xda, 0xfc, 0x68, 0xee, 0x58, 0x3c, 0xc6,
- 0xb3, 0xc0, 0x05, 0xd1, 0xf8, 0xf7, 0xce, 0x23, 0xd8, 0x9c, 0x31, 0x1c, 0x4b, 0xa4, 0x43, 0x3f,
- 0x0a, 0x6d, 0x7f, 0x48, 0x06, 0x6c, 0x9d, 0x8a, 0xb8, 0xc2, 0x20, 0xc6, 0x90, 0x0c, 0x94, 0xff,
- 0x92, 0xa0, 0x7a, 0x9a, 0x11, 0xd1, 0x5d, 0xf8, 0x90, 0xfa, 0xd3, 0xc5, 0xfc, 0x73, 0x56, 0x15,
- 0xca, 0xa2, 0x4e, 0xfd, 0x40, 0x6f, 0x36, 0x6c, 0x4b, 0xaf, 0x7f, 0xae, 0x59, 0xa6, 0xfd, 0x4c,
- 0xb7, 0x0e, 0x8c, 0x8e, 0x65, 0xab, 0x8d, 0x4e, 0xd3, 0x92, 0x97, 0xa8, 0x4b, 0xa6, 0x9d, 0x91,
- 0x13, 0x66, 0x1c, 0x77, 0x13, 0xd6, 0xf5, 0x56, 0xdd, 0xc0, 0x58, 0xab, 0x5b, 0x76, 0x1b, 0xeb,
- 0x75, 0x4d, 0x2e, 0xa0, 0xf7, 0xe1, 0x26, 0x53, 0x77, 0x8e, 0x33, 0x17, 0x95, 0x7f, 0x90, 0x00,
- 0x26, 0x16, 0x44, 0x1f, 0xc0, 0x5a, 0xc2, 0xfe, 0x93, 0x6c, 0xb9, 0x32, 0xb1, 0xac, 0xee, 0xa2,
- 0x7b, 0xb0, 0x11, 0xbe, 0xf6, 0x83, 0xc8, 0x4e, 0x26, 0x05, 0x7e, 0xea, 0x91, 0x19, 0xa2, 0x91,
- 0xc8, 0x0c, 0xe3, 0x5a, 0x20, 0x7f, 0xde, 0x5a, 0xe0, 0x13, 0x40, 0xbc, 0x49, 0x60, 0x4f, 0x27,
- 0x9f, 0x0d, 0x8e, 0x49, 0x0c, 0xa4, 0xfc, 0x04, 0x96, 0x13, 0xf7, 0xb1, 0xb4, 0xe2, 0x0c, 0x23,
- 0xe7, 0xe8, 0x28, 0x51, 0x71, 0xb2, 0x6f, 0xdd, 0xa5, 0x67, 0xb8, 0xc0, 0xf7, 0xfb, 0x14, 0xc3,
- 0xb5, 0x5e, 0xa2, 0x9f, 0xba, 0x4b, 0xbd, 0x83, 0x2a, 0x73, 0x62, 0x87, 0xde, 0x57, 0x5c, 0xe1,
- 0x22, 0xae, 0x30, 0x88, 0xe9, 0x7d, 0x45, 0x94, 0xdf, 0xe4, 0x01, 0xb1, 0xfe, 0x9d, 0xf7, 0x15,
- 0x4b, 0x52, 0x75, 0x7f, 0x70, 0xe4, 0xbd, 0x42, 0x7f, 0x2c, 0xc1, 0x95, 0x28, 0x01, 0x9e, 0x9c,
- 0x54, 0x45, 0x5f, 0x67, 0x7e, 0x90, 0x9f, 0x96, 0x98, 0x02, 0x8d, 0xcf, 0x9e, 0xda, 0x20, 0x0a,
- 0x4e, 0xf0, 0xe5, 0x68, 0x16, 0x0e, 0xfd, 0x89, 0x04, 0x3b, 0x2f, 0xbd, 0x5e, 0x8f, 0x35, 0x27,
- 0x26, 0x69, 0xd4, 0xe6, 0xbf, 0x44, 0x4c, 0x39, 0x38, 0xaf, 0x1e, 0x35, 0x2e, 0x31, 0x91, 0x97,
- 0xf7, 0xd9, 0x0f, 0x5c, 0x7d, 0x79, 0x0a, 0x66, 0xe7, 0x00, 0x76, 0x4e, 0xd7, 0x1e, 0xc9, 0x90,
- 0x7f, 0x43, 0x4e, 0xc4, 0x7a, 0xd0, 0x9f, 0xb4, 0xfa, 0x3a, 0x76, 0x7a, 0x23, 0x12, 0x9f, 0x9a,
- 0xd9, 0xc7, 0x0f, 0x73, 0x9f, 0x49, 0xca, 0x0b, 0xa8, 0x9e, 0x36, 0x3e, 0xdd, 0x8a, 0x35, 0xbd,
- 0xd9, 0xa4, 0x87, 0x11, 0xbd, 0xb5, 0x6f, 0xe0, 0x43, 0x7e, 0x10, 0xe3, 0xbf, 0x32, 0x5b, 0xb1,
- 0x04, 0xf9, 0x43, 0xbd, 0x25, 0x4b, 0xa8, 0x0c, 0x85, 0xfd, 0x4e, 0xb3, 0x29, 0xe7, 0x94, 0xbf,
- 0x2c, 0xc0, 0xb5, 0x39, 0x8d, 0x5e, 0xf4, 0x06, 0x2a, 0xa2, 0x83, 0xec, 0x07, 0x22, 0x51, 0xeb,
- 0x17, 0xed, 0x1a, 0x67, 0x70, 0x7e, 0x50, 0xcb, 0x55, 0x25, 0x3c, 0x91, 0x8f, 0x1e, 0xc1, 0x56,
- 0x5c, 0x3a, 0xf5, 0x49, 0xf4, 0xda, 0x77, 0x45, 0xef, 0x98, 0x19, 0x84, 0x11, 0xc7, 0x47, 0x8f,
- 0x43, 0x86, 0xe6, 0xf7, 0x4b, 0x2a, 0xdc, 0x18, 0x0d, 0x86, 0x4e, 0x10, 0x12, 0xd7, 0x9e, 0xc9,
- 0xce, 0xdf, 0x52, 0xec, 0xc4, 0x44, 0xed, 0x69, 0x11, 0xd7, 0xa1, 0x74, 0x4c, 0x82, 0x70, 0x7c,
- 0x70, 0x67, 0x63, 0xc5, 0x20, 0xf4, 0x29, 0x6c, 0x64, 0xba, 0xe9, 0x7e, 0xc0, 0x37, 0x1f, 0xa3,
- 0x93, 0x87, 0x99, 0x69, 0xd1, 0xe3, 0x56, 0x6a, 0x17, 0x74, 0x99, 0x0f, 0xb1, 0x3a, 0xfe, 0xac,
- 0xe3, 0xd6, 0xb4, 0xeb, 0x61, 0x14, 0x4d, 0xc1, 0x14, 0x17, 0xe4, 0xac, 0x31, 0xd1, 0x2d, 0xb8,
- 0x11, 0xd7, 0x60, 0x6d, 0x6c, 0xd4, 0x35, 0xd3, 0x34, 0xf0, 0x74, 0x03, 0x60, 0x82, 0x32, 0x2d,
- 0xac, 0xb7, 0x69, 0x59, 0x78, 0x15, 0x36, 0x27, 0xd0, 0x1a, 0x56, 0xf5, 0x96, 0x85, 0x35, 0x4d,
- 0xce, 0x29, 0xff, 0x9e, 0x83, 0x8d, 0xa9, 0x8e, 0x23, 0x7a, 0x08, 0x57, 0x66, 0xb4, 0x2f, 0x27,
- 0xc1, 0x65, 0x73, 0xaa, 0x23, 0xa9, 0xbb, 0xe8, 0x53, 0xd8, 0x3a, 0x76, 0x7a, 0x9e, 0x6b, 0xf3,
- 0xd3, 0xd9, 0xf8, 0x16, 0x85, 0x1f, 0xd1, 0x36, 0x18, 0xce, 0xa4, 0x28, 0x71, 0x81, 0x82, 0xee,
- 0x01, 0xe2, 0x0c, 0x64, 0xe0, 0x4e, 0xc8, 0xf9, 0x89, 0x6d, 0x9d, 0x61, 0xb4, 0x81, 0x1b, 0x13,
- 0xd7, 0xa0, 0xc0, 0xb2, 0x24, 0x6f, 0xef, 0xed, 0x2d, 0xe2, 0xa0, 0x5c, 0x33, 0x96, 0x2c, 0x19,
- 0x2f, 0xba, 0x0d, 0x6b, 0x7e, 0xe0, 0xbd, 0xf2, 0x06, 0x4e, 0xcf, 0xe6, 0xa7, 0xa0, 0x22, 0x8b,
- 0x7a, 0xab, 0x31, 0xb4, 0x4e, 0x81, 0xe8, 0x7d, 0x58, 0xed, 0x8e, 0x82, 0x80, 0x4e, 0x9c, 0x53,
- 0x2d, 0x31, 0xaa, 0x15, 0x01, 0xe4, 0x44, 0x77, 0x27, 0x1e, 0x33, 0xb1, 0x0e, 0xbf, 0xf1, 0x8c,
- 0x0f, 0x07, 0xb1, 0x65, 0x94, 0x7f, 0x5a, 0x02, 0x34, 0x7d, 0xc8, 0x9e, 0x7d, 0x23, 0x2f, 0xbd,
- 0x93, 0x1b, 0x79, 0xf4, 0x08, 0xae, 0xc4, 0x82, 0x33, 0x1d, 0x39, 0x1e, 0x7a, 0xe2, 0x5d, 0x68,
- 0x25, 0x1b, 0x73, 0xdf, 0x22, 0x7d, 0xa9, 0x00, 0x91, 0xf3, 0xd6, 0x76, 0xfa, 0xcc, 0x60, 0x85,
- 0x85, 0xd9, 0x2b, 0x91, 0xf3, 0x56, 0x65, 0x4c, 0x28, 0x9a, 0x84, 0x06, 0xb1, 0x07, 0x89, 0x6b,
- 0xbf, 0x3c, 0x61, 0x6b, 0xb4, 0xf6, 0xa0, 0x76, 0xce, 0x16, 0x46, 0x26, 0x12, 0x11, 0xb7, 0x76,
- 0x32, 0x0e, 0x2d, 0x09, 0x18, 0xfa, 0x78, 0xd6, 0x3a, 0x2e, 0x89, 0x6b, 0x95, 0xec, 0x4a, 0xa2,
- 0xef, 0x9f, 0xba, 0x31, 0x4a, 0x82, 0x65, 0xe6, 0xd6, 0xf8, 0x11, 0x94, 0x5c, 0x32, 0xf4, 0x43,
- 0x2f, 0xaa, 0x96, 0x17, 0xb8, 0x4e, 0x68, 0x70, 0x5a, 0x1c, 0x33, 0xa1, 0x7d, 0x58, 0x1e, 0xf8,
- 0x76, 0xf8, 0xda, 0xff, 0xa9, 0x7d, 0x44, 0x48, 0xb5, 0xc2, 0x64, 0x7c, 0x38, 0x57, 0x46, 0xcb,
- 0x37, 0x5f, 0xfb, 0x3f, 0xdd, 0x27, 0x04, 0x57, 0x06, 0xf1, 0xcf, 0x19, 0xcf, 0x62, 0xe0, 0x82,
- 0xcf, 0x62, 0xfa, 0x63, 0x8f, 0x4e, 0x1a, 0x33, 0x71, 0xfa, 0x14, 0xe1, 0x46, 0x74, 0x19, 0xb3,
- 0x87, 0xd7, 0x14, 0xf6, 0xb1, 0x61, 0x3c, 0x66, 0x87, 0xd7, 0x2a, 0x6c, 0xa5, 0x10, 0x6d, 0x15,
- 0x5b, 0x2d, 0x0d, 0xcb, 0xb9, 0xda, 0x0a, 0xad, 0x55, 0x44, 0x77, 0xcb, 0x55, 0xbe, 0x86, 0x22,
- 0xd3, 0x09, 0xdd, 0x82, 0x15, 0xe6, 0x7e, 0x76, 0xdf, 0xeb, 0x06, 0x7e, 0x28, 0x1e, 0xcd, 0x2d,
- 0x33, 0xd8, 0x21, 0x03, 0x4d, 0x36, 0x73, 0xf7, 0xc4, 0xee, 0xfa, 0x6e, 0x9c, 0x7a, 0x57, 0x62,
- 0x60, 0xdd, 0x77, 0x09, 0xfa, 0x18, 0x10, 0xe5, 0xa1, 0xf5, 0x84, 0x58, 0xd1, 0xc9, 0xdb, 0x39,
- 0x59, 0x60, 0x44, 0x34, 0x71, 0x5e, 0x29, 0x3f, 0x97, 0xa0, 0x32, 0x36, 0x2f, 0x7a, 0x04, 0x79,
- 0xba, 0x26, 0xd2, 0xc2, 0x86, 0xa4, 0xe4, 0x48, 0x85, 0xf2, 0x11, 0x21, 0xc9, 0xae, 0xc5, 0x87,
- 0x67, 0xb3, 0xb2, 0x50, 0x56, 0x3a, 0x22, 0xec, 0x87, 0xf2, 0x8d, 0x04, 0x25, 0xe1, 0x29, 0xe8,
- 0x77, 0x27, 0x0e, 0xb6, 0xb8, 0x22, 0x63, 0xf7, 0xfa, 0x7d, 0xb8, 0xde, 0xf7, 0x06, 0xb6, 0xe3,
- 0x1e, 0x3b, 0x83, 0xee, 0xe4, 0x65, 0x6c, 0xe6, 0xad, 0xe1, 0x76, 0xdf, 0x1b, 0xa8, 0x9c, 0xa4,
- 0x9e, 0xa0, 0xa0, 0xc1, 0x59, 0x87, 0x15, 0x21, 0xeb, 0x22, 0x33, 0x5a, 0x16, 0xbc, 0x6c, 0x56,
- 0xff, 0x9c, 0x83, 0x82, 0xd9, 0xf3, 0x17, 0x78, 0x9d, 0x96, 0x6e, 0x13, 0xe6, 0xe6, 0xb6, 0x09,
- 0xf3, 0x67, 0xb4, 0x09, 0x0b, 0x8b, 0xbd, 0xa6, 0x2c, 0xce, 0x7e, 0x4d, 0xb9, 0x0f, 0x95, 0xf8,
- 0x3d, 0x64, 0x28, 0x4a, 0x80, 0xc5, 0x9f, 0x52, 0x4e, 0x58, 0x69, 0x42, 0x60, 0x75, 0x44, 0x5c,
- 0xcf, 0xf6, 0xa9, 0xbf, 0x96, 0x16, 0x48, 0x08, 0xf5, 0x04, 0xd7, 0xa1, 0xef, 0x12, 0x2c, 0x77,
- 0x33, 0x10, 0xe5, 0x3f, 0x24, 0x58, 0xcf, 0x34, 0x91, 0x4f, 0xbd, 0xd1, 0xa6, 0xa6, 0x7d, 0xe5,
- 0x1d, 0x93, 0x81, 0x3d, 0x70, 0xfa, 0xf1, 0x8e, 0xa9, 0x30, 0x48, 0xcb, 0xe9, 0x13, 0xba, 0x34,
- 0x47, 0x4e, 0xdf, 0xeb, 0x9d, 0x70, 0x3c, 0xdf, 0x27, 0xc0, 0x41, 0x8c, 0xa0, 0x01, 0x25, 0xc7,
- 0x75, 0x03, 0x12, 0xc6, 0x2f, 0x4b, 0xe7, 0x77, 0x36, 0xdb, 0x7e, 0x18, 0x39, 0x3d, 0x95, 0x73,
- 0xe0, 0x98, 0x15, 0x5d, 0x87, 0x4a, 0x44, 0x7a, 0x64, 0xf8, 0xda, 0x1f, 0x90, 0xf8, 0xb5, 0xec,
- 0x18, 0x40, 0x6b, 0x69, 0xd2, 0x77, 0xbc, 0x9e, 0x78, 0x94, 0xc4, 0x3f, 0x94, 0x5f, 0x4a, 0xb0,
- 0x9a, 0x12, 0x87, 0xaa, 0x50, 0x62, 0x59, 0x3c, 0x88, 0x2b, 0xf1, 0xf8, 0x13, 0xed, 0x40, 0xb9,
- 0xe7, 0x77, 0x9d, 0x71, 0x5f, 0xb2, 0x82, 0xc7, 0xdf, 0xe8, 0x0a, 0x2c, 0x05, 0xe4, 0xd5, 0xe4,
- 0x9a, 0x47, 0x7c, 0xd1, 0xa9, 0x0f, 0x99, 0x78, 0x1e, 0x4c, 0x44, 0x13, 0x9c, 0x83, 0x58, 0x28,
- 0xb9, 0x0d, 0x6b, 0x61, 0x14, 0x10, 0x12, 0xd9, 0xb1, 0x05, 0xb8, 0xe6, 0xab, 0x1c, 0x2a, 0xb4,
- 0xba, 0xfb, 0x6b, 0x09, 0x56, 0x53, 0x0d, 0x5d, 0xf4, 0x1e, 0xec, 0xc4, 0x77, 0x12, 0xa6, 0xa5,
- 0x5a, 0x1d, 0x33, 0x13, 0x35, 0x57, 0xa1, 0x52, 0x37, 0x5a, 0xfb, 0x3a, 0x3e, 0xd4, 0x1a, 0xb2,
- 0xc4, 0x4a, 0x41, 0xad, 0xd5, 0xa0, 0xe4, 0x87, 0x1a, 0xae, 0x1f, 0xa8, 0x2d, 0x7a, 0x4e, 0x66,
- 0x78, 0xf1, 0xc2, 0x1a, 0xad, 0x40, 0x99, 0xdf, 0x6c, 0xb0, 0x96, 0xde, 0x32, 0x94, 0x5a, 0x06,
- 0x7b, 0x85, 0x2d, 0x17, 0xd0, 0x65, 0xd8, 0x10, 0x1f, 0x76, 0x5b, 0x6b, 0xa9, 0x4d, 0xfd, 0xc7,
- 0xec, 0xb2, 0x06, 0x60, 0x69, 0x5f, 0xd5, 0x9b, 0xec, 0x5e, 0xa6, 0x0a, 0x5b, 0x71, 0x43, 0x90,
- 0xc6, 0xe2, 0x78, 0x10, 0xb9, 0x74, 0xf7, 0x04, 0xd6, 0xd2, 0x4d, 0x54, 0xb4, 0x0b, 0xd7, 0xeb,
- 0x58, 0x6b, 0xe8, 0x56, 0xa2, 0xdd, 0x98, 0xd6, 0xbe, 0x0c, 0x85, 0xa7, 0xba, 0xa9, 0xca, 0x12,
- 0x5a, 0x03, 0x38, 0x54, 0x4d, 0x4b, 0xc3, 0x94, 0x54, 0xce, 0xd1, 0x82, 0x55, 0x3d, 0xd4, 0xb0,
- 0x5e, 0x57, 0x5b, 0xb6, 0xf6, 0xbc, 0x8d, 0x35, 0xd3, 0x94, 0xf3, 0x54, 0xf7, 0x86, 0x6e, 0xd6,
- 0x8d, 0xa7, 0x1a, 0x96, 0x0b, 0xf4, 0x54, 0xf3, 0xa4, 0x5e, 0x93, 0x8b, 0x77, 0x7f, 0x06, 0x72,
- 0xd6, 0xd7, 0xa9, 0x25, 0x92, 0x13, 0xb7, 0x0f, 0x8d, 0x46, 0x76, 0xf4, 0x99, 0x24, 0xe6, 0x8b,
- 0x56, 0xfd, 0x00, 0x1b, 0x2d, 0xa3, 0x63, 0xca, 0x12, 0x52, 0xe0, 0xbd, 0x69, 0x12, 0x35, 0x49,
- 0x93, 0xbb, 0xfb, 0xe7, 0x12, 0x6c, 0x4c, 0xd5, 0x96, 0xe8, 0x7d, 0xb8, 0x99, 0xb9, 0xc0, 0x9a,
- 0x31, 0xff, 0x1b, 0xb0, 0x9d, 0x21, 0x32, 0xf5, 0xd6, 0xe3, 0xa6, 0x66, 0x77, 0x4c, 0x9a, 0xf9,
- 0xa6, 0x2f, 0xc1, 0x0e, 0x3b, 0x4d, 0x4b, 0x67, 0xd8, 0x1c, 0x35, 0x6f, 0x06, 0xdb, 0x69, 0x35,
- 0xf5, 0x43, 0xdd, 0xd2, 0x1a, 0x8c, 0x22, 0x7f, 0xf7, 0xaf, 0x24, 0x90, 0xb3, 0x55, 0x21, 0x73,
- 0x11, 0xac, 0xc5, 0x9c, 0x33, 0x9d, 0x8a, 0xa5, 0x62, 0x2d, 0x91, 0xb3, 0x9f, 0xea, 0x0d, 0xe6,
- 0x5e, 0xd7, 0xe0, 0x6a, 0x02, 0xd1, 0x32, 0x12, 0xc8, 0x5c, 0x86, 0x0b, 0x6b, 0xfb, 0x9d, 0x56,
- 0x83, 0xf9, 0x58, 0x1a, 0xc1, 0x5d, 0x42, 0x6b, 0xc8, 0x85, 0xbb, 0x0f, 0xa1, 0x32, 0x8e, 0xf7,
- 0xe8, 0x0a, 0xa0, 0x7d, 0xfd, 0xb9, 0xd6, 0xb0, 0xb1, 0x6a, 0x69, 0x76, 0x43, 0xdb, 0x57, 0x3b,
- 0x4d, 0x4b, 0xbe, 0x44, 0x3d, 0xa3, 0xad, 0x61, 0xbb, 0xad, 0x61, 0xd3, 0x68, 0xc9, 0xd2, 0xcb,
- 0x25, 0xf6, 0x2f, 0x95, 0x87, 0xff, 0x1b, 0x00, 0x00, 0xff, 0xff, 0x34, 0x6f, 0x25, 0x9b, 0xb1,
- 0x32, 0x00, 0x00,
+ // 3760 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe4, 0x3b, 0x4b, 0x6c, 0x1b, 0x49,
+ 0x76, 0x6e, 0x7e, 0x44, 0xf2, 0xe9, 0xd7, 0x2a, 0x69, 0x64, 0x5a, 0xb6, 0xc7, 0x9a, 0x9e, 0xf1,
+ 0x8c, 0x57, 0x9e, 0xd1, 0x64, 0x6d, 0x2f, 0x32, 0xbb, 0x48, 0x36, 0x69, 0x92, 0x2d, 0xab, 0x3d,
+ 0x54, 0x37, 0xa7, 0xd8, 0x94, 0xed, 0x3d, 0xa4, 0xb7, 0xcd, 0x2e, 0xc9, 0x1d, 0x93, 0x6c, 0x6e,
+ 0x77, 0x53, 0x6b, 0x0d, 0x76, 0x0e, 0x01, 0x82, 0x1c, 0x36, 0xc8, 0x21, 0xa7, 0x00, 0x01, 0x72,
+ 0xdc, 0x5b, 0x72, 0xcb, 0x65, 0x91, 0x4b, 0x80, 0x00, 0x8b, 0x20, 0x40, 0x4e, 0x41, 0x90, 0x9c,
+ 0x02, 0x24, 0xc8, 0x21, 0xa7, 0xdc, 0x03, 0x04, 0x41, 0x50, 0x9f, 0x26, 0xbb, 0x9b, 0x14, 0x45,
+ 0x69, 0x66, 0x72, 0xc9, 0x8d, 0xf5, 0x7e, 0xf5, 0xea, 0xd5, 0xab, 0xf7, 0x5e, 0xbd, 0x2e, 0x42,
+ 0xf9, 0xec, 0xf1, 0xfe, 0x30, 0xf0, 0x23, 0x1f, 0xdd, 0x26, 0x6f, 0xa3, 0xfd, 0xbe, 0x33, 0x0c,
+ 0xf7, 0x5f, 0xf9, 0xfe, 0x1b, 0x6f, 0x70, 0xba, 0x3f, 0x74, 0x82, 0x68, 0x40, 0x82, 0xfd, 0xb3,
+ 0xc7, 0xca, 0x17, 0x50, 0xad, 0xbf, 0x26, 0xdd, 0x37, 0xea, 0x99, 0xe3, 0xf5, 0x9c, 0x57, 0x5e,
+ 0xcf, 0x8b, 0xce, 0x31, 0xf9, 0xc9, 0x88, 0x84, 0x11, 0xfa, 0x1e, 0x14, 0xc2, 0x9e, 0x1f, 0x55,
+ 0xa5, 0x5d, 0xe9, 0xc1, 0xf2, 0xa3, 0xf7, 0xf6, 0xe7, 0xc8, 0xd9, 0x6f, 0xf7, 0xfc, 0x08, 0x33,
+ 0x72, 0xe5, 0xe7, 0x05, 0xb8, 0x35, 0x43, 0x66, 0x38, 0xf4, 0x07, 0x21, 0xb9, 0xa6, 0x50, 0xf4,
+ 0x11, 0xac, 0x77, 0xfd, 0xd1, 0x20, 0xb2, 0x1d, 0x2e, 0xb4, 0x47, 0xaa, 0xb9, 0x5d, 0xe9, 0x41,
+ 0x11, 0xaf, 0x31, 0xb0, 0x1a, 0x43, 0xd1, 0x6f, 0xc2, 0xed, 0x9e, 0x13, 0x46, 0xb6, 0x3f, 0xe8,
+ 0x79, 0x03, 0x62, 0x77, 0x9d, 0x41, 0x97, 0xf4, 0x18, 0xca, 0x0e, 0x49, 0xb7, 0x5a, 0xdc, 0x95,
+ 0x1e, 0xe4, 0x71, 0x95, 0x92, 0x98, 0x8c, 0xa2, 0x3e, 0x21, 0x68, 0x93, 0x2e, 0xfa, 0x0a, 0xb6,
+ 0xdc, 0x51, 0xe0, 0x44, 0x9e, 0x3f, 0xb0, 0x03, 0xf2, 0x93, 0x91, 0x17, 0x90, 0x3e, 0x19, 0x44,
+ 0xd5, 0xfc, 0xae, 0xf4, 0x60, 0xed, 0xd1, 0xb3, 0xb9, 0xea, 0x5e, 0xb8, 0xe8, 0xfd, 0x86, 0x10,
+ 0x89, 0x27, 0x12, 0xf1, 0xa6, 0x3b, 0x0d, 0x44, 0x3f, 0x86, 0x4d, 0x27, 0x21, 0xc0, 0x1e, 0x0d,
+ 0x5d, 0x27, 0x22, 0xd5, 0x02, 0x33, 0xd6, 0xa7, 0x73, 0x67, 0x4f, 0x4e, 0xdc, 0x61, 0x6c, 0x18,
+ 0x39, 0x53, 0x30, 0xa5, 0x0f, 0x9b, 0x33, 0xb4, 0x41, 0x1f, 0xc0, 0x6e, 0xa3, 0x83, 0x55, 0x4b,
+ 0x37, 0x0d, 0x1b, 0x6b, 0x5f, 0x74, 0x74, 0xac, 0x1d, 0x69, 0x86, 0x65, 0x77, 0x8c, 0x76, 0x4b,
+ 0xab, 0xeb, 0x07, 0xba, 0xd6, 0x90, 0x6f, 0xa0, 0x2a, 0x6c, 0x35, 0x4c, 0xdb, 0x30, 0x2d, 0xbb,
+ 0x7d, 0x68, 0x3e, 0xb7, 0x63, 0x0e, 0x59, 0x42, 0xdb, 0x80, 0x8e, 0x3a, 0xed, 0x2c, 0x3c, 0xa7,
+ 0x0c, 0x01, 0x4d, 0x2b, 0x86, 0x7e, 0x04, 0x1b, 0x74, 0x57, 0xed, 0xa4, 0x7e, 0x55, 0x69, 0x37,
+ 0xff, 0x60, 0xf9, 0xd1, 0x27, 0x97, 0x7a, 0x44, 0xca, 0xc2, 0x72, 0x98, 0x81, 0x28, 0x01, 0xc8,
+ 0x59, 0xaa, 0x6f, 0xdb, 0xe9, 0x94, 0x7f, 0x95, 0xa0, 0x4c, 0xf9, 0x2c, 0xaf, 0x4f, 0xd0, 0x5d,
+ 0x80, 0x90, 0x04, 0x67, 0x5e, 0x97, 0xd8, 0x9e, 0xcb, 0x1c, 0xae, 0x82, 0x2b, 0x02, 0xa2, 0xbb,
+ 0xe8, 0x36, 0x54, 0xc2, 0xc8, 0x09, 0x22, 0xe6, 0x8e, 0x12, 0x73, 0xc7, 0x32, 0x03, 0x50, 0xf7,
+ 0x7b, 0x0f, 0x56, 0xc6, 0xee, 0x47, 0xf1, 0x39, 0x86, 0x5f, 0x8e, 0x61, 0x94, 0xe4, 0x3b, 0x20,
+ 0xa7, 0x5c, 0x24, 0x72, 0x4e, 0x99, 0x77, 0x56, 0xf0, 0x7a, 0x12, 0x6e, 0x39, 0xa7, 0xe8, 0x73,
+ 0x58, 0x09, 0x48, 0xe8, 0x8f, 0x02, 0xa6, 0x4a, 0x28, 0xdc, 0xe8, 0xc1, 0xdc, 0xe5, 0x63, 0xc1,
+ 0xa0, 0xbb, 0x21, 0x5e, 0x0e, 0x26, 0x03, 0xe5, 0x2d, 0x6c, 0xc5, 0x4b, 0x4c, 0xd9, 0xb6, 0x06,
+ 0x15, 0xb6, 0x97, 0x91, 0xd7, 0x27, 0xc2, 0xc0, 0xf7, 0x2f, 0x35, 0x30, 0x95, 0x82, 0xcb, 0x61,
+ 0x6c, 0xb2, 0x3b, 0x50, 0x49, 0x9b, 0xb8, 0x8c, 0x27, 0x00, 0xe5, 0x0f, 0x25, 0x78, 0xb7, 0xe6,
+ 0x44, 0xdd, 0xd7, 0xc9, 0x79, 0x9b, 0xbe, 0xff, 0x66, 0x34, 0x8c, 0x43, 0xd5, 0x3d, 0x58, 0xee,
+ 0x93, 0xa0, 0xfb, 0xda, 0x19, 0x44, 0xd4, 0xe8, 0x12, 0xb3, 0x07, 0xc4, 0x20, 0xdd, 0x4d, 0x6b,
+ 0x99, 0x67, 0x9e, 0x76, 0x55, 0x2d, 0x9f, 0x15, 0xca, 0x39, 0x39, 0xaf, 0xfc, 0x5c, 0x82, 0x7b,
+ 0x17, 0x6a, 0x23, 0x82, 0xdc, 0x29, 0x6c, 0x8f, 0x67, 0x9b, 0xe5, 0xe4, 0xdf, 0x5d, 0x68, 0xea,
+ 0x94, 0xa3, 0x6f, 0x85, 0x33, 0xa0, 0xca, 0x57, 0x70, 0x8f, 0x45, 0x1d, 0x33, 0x70, 0x49, 0x70,
+ 0x30, 0xea, 0x9d, 0x78, 0xbd, 0x6c, 0x14, 0xbf, 0xd4, 0x34, 0xdf, 0x87, 0x82, 0x17, 0x91, 0x7e,
+ 0x35, 0xb7, 0x80, 0x55, 0x9a, 0xde, 0x80, 0xe8, 0x11, 0xe9, 0x63, 0xc6, 0xa2, 0xfc, 0x4a, 0x82,
+ 0xdd, 0x8b, 0xe7, 0x17, 0xc6, 0x78, 0x01, 0x6b, 0x27, 0x29, 0x8c, 0xf0, 0x92, 0x5f, 0x9b, 0x3b,
+ 0xd3, 0x2c, 0x89, 0x19, 0x39, 0xe8, 0x10, 0xd6, 0x4e, 0x08, 0x09, 0x6d, 0x67, 0xe0, 0xda, 0x91,
+ 0xf3, 0x96, 0x84, 0xcc, 0x77, 0x96, 0x1f, 0x29, 0x73, 0x25, 0xb7, 0x02, 0xaf, 0x4b, 0xf0, 0x0a,
+ 0xe5, 0x54, 0x07, 0xae, 0x45, 0xf9, 0x94, 0xcf, 0xe0, 0xe6, 0x53, 0x12, 0xd5, 0x38, 0x71, 0x3b,
+ 0x72, 0xa2, 0x51, 0x18, 0xdb, 0xef, 0x2e, 0x80, 0x10, 0x32, 0x31, 0x5f, 0x45, 0x40, 0x74, 0x57,
+ 0xf9, 0x0f, 0x09, 0xaa, 0xd3, 0xac, 0x62, 0xe9, 0xf3, 0x79, 0xd1, 0x17, 0xb0, 0x16, 0xa3, 0x43,
+ 0xc6, 0xc8, 0xf4, 0x5f, 0x7b, 0xb4, 0x37, 0x57, 0xff, 0xf4, 0x54, 0xab, 0xaf, 0x92, 0x43, 0x1a,
+ 0x59, 0x87, 0x01, 0x19, 0x3a, 0xe7, 0x34, 0xaa, 0xc7, 0x52, 0x79, 0xf2, 0xfa, 0xe4, 0x12, 0xab,
+ 0xc4, 0x5c, 0x42, 0xb0, 0x3c, 0xcc, 0x40, 0x94, 0x3f, 0x2f, 0xc0, 0x56, 0x3d, 0x20, 0x4e, 0x44,
+ 0x84, 0x0a, 0x5f, 0xaf, 0x50, 0x40, 0x87, 0x50, 0xe9, 0x11, 0x27, 0x24, 0x76, 0x40, 0x4e, 0xc4,
+ 0xce, 0x3d, 0x9c, 0xef, 0x7d, 0x94, 0x1a, 0x93, 0x13, 0x12, 0x90, 0x41, 0x97, 0xe0, 0x72, 0x4f,
+ 0x8c, 0xd1, 0x73, 0x90, 0x47, 0x21, 0x09, 0x6c, 0x6f, 0x70, 0xe2, 0x07, 0x7d, 0x16, 0x2a, 0xd9,
+ 0xa2, 0x97, 0x1f, 0x7d, 0x3c, 0x57, 0x60, 0x27, 0x24, 0x81, 0x3e, 0xe1, 0xc1, 0xeb, 0xa3, 0x34,
+ 0x80, 0xe6, 0xe3, 0xd8, 0x96, 0x49, 0xd9, 0x8b, 0xe4, 0xe3, 0x16, 0xe7, 0x4b, 0x8a, 0x47, 0xc3,
+ 0x29, 0x18, 0xfa, 0x19, 0xdc, 0x8d, 0x67, 0x18, 0x06, 0x7e, 0x97, 0x84, 0x21, 0x75, 0x87, 0xa1,
+ 0x13, 0x38, 0x7d, 0x12, 0x91, 0x20, 0x64, 0x09, 0x64, 0xf9, 0xd1, 0x67, 0x8b, 0xcc, 0xd5, 0x1a,
+ 0x0b, 0x68, 0x8d, 0xf9, 0xf1, 0xed, 0xe1, 0xc5, 0x48, 0xf4, 0x10, 0x36, 0x3c, 0x97, 0xf4, 0x87,
+ 0x7e, 0x44, 0x06, 0xdd, 0x73, 0x3b, 0xf2, 0xdf, 0x90, 0x41, 0x75, 0x89, 0xf9, 0xa9, 0x9c, 0x40,
+ 0x58, 0x14, 0x8e, 0x3e, 0x01, 0xe4, 0xb8, 0xae, 0x47, 0xd5, 0x76, 0x7a, 0xac, 0x3a, 0x22, 0x61,
+ 0x54, 0x2d, 0x31, 0xea, 0x8d, 0x09, 0x46, 0x78, 0x85, 0xf2, 0x47, 0x39, 0x78, 0x27, 0xe3, 0x2e,
+ 0xe2, 0x58, 0xfc, 0x10, 0x4a, 0x62, 0x11, 0xc2, 0x65, 0x3e, 0x58, 0xc4, 0xe1, 0x71, 0xcc, 0x84,
+ 0x7e, 0x07, 0x36, 0xd9, 0x76, 0xc7, 0x86, 0xf3, 0x87, 0x6c, 0x57, 0xb8, 0x0b, 0xed, 0x5f, 0xba,
+ 0xe3, 0xc2, 0x5a, 0x26, 0xe3, 0xc2, 0x1b, 0xa3, 0x2c, 0x08, 0x59, 0xb0, 0x1e, 0x9f, 0xcb, 0x13,
+ 0xc7, 0xeb, 0x8d, 0x02, 0x22, 0xbc, 0xe9, 0xe1, 0x22, 0x7a, 0x1e, 0x70, 0x16, 0x1c, 0x9f, 0x6d,
+ 0x31, 0x56, 0x0c, 0x40, 0xdc, 0x1c, 0xc2, 0x8d, 0xf9, 0xd9, 0xf9, 0x0c, 0x8a, 0xcc, 0x8d, 0x85,
+ 0x25, 0x94, 0x05, 0x0e, 0x00, 0x67, 0x50, 0x7e, 0x21, 0xc1, 0x66, 0x4a, 0xa0, 0xb0, 0xee, 0xb5,
+ 0x25, 0xce, 0x5a, 0x77, 0xee, 0xeb, 0xaf, 0xfb, 0xaf, 0x24, 0x28, 0xb2, 0x69, 0xd0, 0x2d, 0xe0,
+ 0x47, 0x76, 0x12, 0x0c, 0x4b, 0x6c, 0xac, 0xbb, 0xe3, 0x10, 0x92, 0xbb, 0x5a, 0x08, 0xb9, 0x0f,
+ 0x6b, 0xcc, 0x13, 0x82, 0x38, 0x28, 0x88, 0x52, 0x68, 0x95, 0x42, 0xc7, 0x91, 0x02, 0x7d, 0x1f,
+ 0x6e, 0xf1, 0x89, 0xc9, 0xdb, 0xa1, 0x27, 0xca, 0x2b, 0x96, 0x9b, 0x69, 0x8d, 0x55, 0x60, 0x35,
+ 0xd6, 0x36, 0x23, 0xd0, 0xc6, 0x78, 0x9a, 0x6a, 0xdb, 0xa4, 0xab, 0x3c, 0x84, 0xb5, 0x74, 0xd8,
+ 0x99, 0xb3, 0x0a, 0xe5, 0xbf, 0xa4, 0x78, 0x8f, 0x59, 0xfa, 0x4a, 0xec, 0xb1, 0x4f, 0xc7, 0x0b,
+ 0xed, 0x08, 0xe7, 0xe4, 0x0c, 0x97, 0x47, 0x87, 0xdc, 0xff, 0x79, 0x74, 0xc8, 0xcf, 0x8e, 0x0e,
+ 0xca, 0x5f, 0x8c, 0xdd, 0x51, 0xac, 0x5d, 0xb8, 0xe3, 0x0f, 0xae, 0xbc, 0xf8, 0xc3, 0x1b, 0xf1,
+ 0xf2, 0x5b, 0xb0, 0xca, 0x7e, 0x64, 0xdc, 0xf1, 0x3b, 0x0b, 0x54, 0x0e, 0x9c, 0xe1, 0xf0, 0x06,
+ 0x5e, 0xf1, 0x13, 0xe3, 0x5a, 0x19, 0x96, 0x02, 0x12, 0x8e, 0x7a, 0x91, 0xb2, 0x0f, 0x9b, 0x4d,
+ 0x2f, 0x8c, 0x13, 0xf7, 0x38, 0xdd, 0xdf, 0x84, 0x12, 0x4f, 0x25, 0xf1, 0xe6, 0x2e, 0xb1, 0x9c,
+ 0xe0, 0x2a, 0x2f, 0x60, 0x2b, 0x4d, 0x2f, 0xd6, 0xf7, 0xdb, 0x50, 0x16, 0x4a, 0x84, 0xa2, 0xba,
+ 0x5b, 0x2c, 0x9a, 0x8d, 0xb9, 0x94, 0xbf, 0x94, 0x60, 0x83, 0x8a, 0x66, 0x8a, 0x8f, 0x15, 0xb9,
+ 0x95, 0x51, 0xe4, 0xf0, 0x46, 0xac, 0x0a, 0x3a, 0x86, 0x0a, 0x37, 0x0b, 0x2d, 0xea, 0xb9, 0x49,
+ 0x7e, 0xfd, 0x92, 0xb2, 0x2d, 0x23, 0x9d, 0x1b, 0x49, 0x77, 0xc3, 0xc3, 0x1b, 0xb8, 0xec, 0x8b,
+ 0xdf, 0x3b, 0xf7, 0xa1, 0x1c, 0xc3, 0xa9, 0x97, 0xc7, 0x73, 0xb0, 0x65, 0x55, 0x70, 0x49, 0xd0,
+ 0xd5, 0x8a, 0x90, 0xf7, 0xdc, 0x90, 0xc6, 0xb3, 0xa4, 0xdc, 0x49, 0xf4, 0x89, 0xb7, 0x3b, 0x7f,
+ 0x25, 0x5f, 0x57, 0x8e, 0x61, 0x8b, 0x5f, 0x0f, 0x33, 0xd5, 0xc5, 0xd7, 0xcc, 0x16, 0x2c, 0x0f,
+ 0x65, 0x04, 0xff, 0xbf, 0xce, 0x43, 0xff, 0x92, 0x83, 0x92, 0x20, 0xb9, 0xac, 0x40, 0xbd, 0x66,
+ 0x54, 0xfe, 0xd6, 0xca, 0xb1, 0x1a, 0x2c, 0x89, 0x92, 0xb6, 0x70, 0xe5, 0x42, 0x59, 0x70, 0x5e,
+ 0x54, 0xd2, 0x15, 0xbf, 0xb1, 0x92, 0x4e, 0xf9, 0xa7, 0x02, 0xac, 0xa5, 0xf7, 0x00, 0x3d, 0x85,
+ 0x62, 0xd7, 0x19, 0x89, 0x9c, 0xbc, 0x76, 0xc9, 0xfd, 0x2f, 0xcd, 0xbb, 0x5f, 0xa7, 0x8c, 0x98,
+ 0xf3, 0xa3, 0x97, 0x80, 0x02, 0xf2, 0xbb, 0xa4, 0x1b, 0x11, 0xd7, 0xee, 0x3a, 0x81, 0x6b, 0x47,
+ 0xe7, 0x43, 0x22, 0xae, 0x0d, 0xf3, 0xbd, 0xa2, 0x1e, 0x10, 0xd7, 0x8b, 0xea, 0x4e, 0xe0, 0x5a,
+ 0xe7, 0x43, 0x82, 0xe5, 0x58, 0x4c, 0x0c, 0x41, 0xbb, 0xb0, 0xec, 0x92, 0xb0, 0x1b, 0x78, 0xc3,
+ 0xf1, 0x86, 0x55, 0x70, 0x12, 0xa4, 0xfc, 0x4f, 0x0e, 0x8a, 0x4c, 0x1b, 0xf4, 0x0e, 0x6c, 0xd4,
+ 0xd5, 0x4e, 0x5b, 0xcb, 0xf4, 0x87, 0xb6, 0x40, 0x6e, 0x37, 0x4d, 0xcb, 0xee, 0x18, 0xea, 0xb1,
+ 0xaa, 0x37, 0xd5, 0x5a, 0x53, 0x93, 0x25, 0x74, 0x0f, 0x6e, 0x33, 0xa8, 0xda, 0xc4, 0x9a, 0xda,
+ 0x78, 0x69, 0xd7, 0x4c, 0xf3, 0x73, 0xad, 0x61, 0xd7, 0x5e, 0xda, 0x9d, 0xb6, 0x86, 0xe5, 0x1c,
+ 0xda, 0x80, 0xd5, 0xa6, 0xa6, 0xb6, 0x35, 0x5b, 0x7b, 0xd1, 0xd2, 0xb1, 0xd6, 0x90, 0xf3, 0x94,
+ 0xc7, 0xec, 0x58, 0x6d, 0xbd, 0xa1, 0xd9, 0x75, 0xd5, 0xa8, 0x6b, 0xcd, 0x26, 0xef, 0x4d, 0x3d,
+ 0xd7, 0x8d, 0x86, 0xf9, 0x5c, 0x2e, 0xa0, 0x0f, 0x60, 0xb7, 0xa5, 0xbe, 0x64, 0x3d, 0x2a, 0x0d,
+ 0x63, 0x13, 0xdb, 0x75, 0x15, 0x37, 0x6c, 0xeb, 0x65, 0x4b, 0xb3, 0xb1, 0xf6, 0x4c, 0xab, 0x5b,
+ 0x5a, 0x43, 0x2e, 0x52, 0x31, 0x33, 0xa8, 0x1a, 0x5a, 0xbd, 0xa9, 0x1b, 0x5a, 0x43, 0x5e, 0x42,
+ 0x77, 0xa0, 0x1a, 0x13, 0x98, 0x2d, 0x36, 0x83, 0x61, 0x5a, 0xf6, 0xb1, 0xda, 0xd4, 0x1b, 0x72,
+ 0x89, 0x2a, 0x96, 0x62, 0x97, 0xcb, 0x48, 0x81, 0x77, 0xa9, 0xd6, 0x54, 0x2b, 0x4a, 0x49, 0x6d,
+ 0x90, 0x16, 0x20, 0x57, 0xd0, 0x5d, 0xb8, 0x45, 0xd7, 0xa8, 0x1b, 0x4f, 0xc7, 0x6b, 0x16, 0x8b,
+ 0xd0, 0x1a, 0x32, 0xa0, 0xdb, 0x70, 0x33, 0x46, 0x53, 0x11, 0xf1, 0xfa, 0xa8, 0xb1, 0x96, 0x29,
+ 0xd2, 0x3c, 0xd6, 0x70, 0x53, 0x6d, 0xb5, 0x28, 0x01, 0xd6, 0xda, 0x1a, 0x3e, 0xe6, 0xdd, 0xb4,
+ 0x15, 0xe5, 0x97, 0x39, 0x28, 0xb2, 0x98, 0x99, 0x09, 0xcf, 0x52, 0x22, 0x3c, 0xcf, 0x3c, 0x7d,
+ 0xb9, 0x6f, 0xf1, 0x32, 0x94, 0xff, 0xe6, 0x2e, 0x43, 0x99, 0x5e, 0x45, 0xe1, 0xc2, 0x5e, 0x45,
+ 0xf1, 0xea, 0xbd, 0x8a, 0xff, 0xce, 0x41, 0x39, 0x06, 0x65, 0x7a, 0x74, 0xd2, 0xdc, 0x1e, 0x5d,
+ 0xee, 0x92, 0x1e, 0x5d, 0x7e, 0xba, 0x47, 0x67, 0x40, 0x29, 0xf2, 0xba, 0x6f, 0x48, 0x44, 0x03,
+ 0x15, 0xd5, 0xf4, 0xc9, 0x42, 0x9a, 0xf2, 0x7c, 0x48, 0x5c, 0x8b, 0xf3, 0xe2, 0x58, 0x08, 0x4d,
+ 0xaa, 0xc3, 0xc0, 0xeb, 0x12, 0x11, 0xa5, 0x16, 0xe9, 0x6f, 0x70, 0x86, 0x44, 0xc4, 0x5c, 0xba,
+ 0x6e, 0xc4, 0xdc, 0xa9, 0xc3, 0x5a, 0x5a, 0x31, 0x6a, 0x1f, 0xae, 0xda, 0xc4, 0x7a, 0x65, 0x0e,
+ 0xd0, 0x5d, 0xb4, 0x05, 0x45, 0xd6, 0x1e, 0x15, 0xbd, 0x52, 0x3e, 0x50, 0xfe, 0x3a, 0x0f, 0x2b,
+ 0xc9, 0xca, 0x0c, 0x69, 0xe9, 0x90, 0xf8, 0xe9, 0xc2, 0x35, 0x5d, 0x3a, 0x20, 0x4e, 0x77, 0x97,
+ 0x72, 0xdf, 0x50, 0x77, 0x69, 0x76, 0xa8, 0xcd, 0x7f, 0x0b, 0xa1, 0xb6, 0x30, 0x1d, 0x6a, 0xff,
+ 0x58, 0xba, 0x24, 0xd4, 0xde, 0x84, 0x4d, 0x13, 0x37, 0x34, 0x6c, 0x77, 0x8c, 0x83, 0x4e, 0xf3,
+ 0x40, 0x6f, 0xc6, 0xd1, 0x76, 0x91, 0xc0, 0x98, 0xbb, 0x2c, 0x30, 0xe6, 0xa7, 0x43, 0x5f, 0x41,
+ 0xf9, 0xe7, 0x3c, 0x6c, 0xce, 0x30, 0x1c, 0x7a, 0x15, 0xd7, 0xd4, 0x62, 0x2b, 0x9f, 0x5d, 0xd5,
+ 0xf4, 0xfb, 0xb3, 0xdb, 0x87, 0xa3, 0x5e, 0x84, 0x85, 0x64, 0xe4, 0xc2, 0x26, 0x3d, 0xc5, 0xf6,
+ 0xd4, 0x5e, 0xd3, 0xd3, 0xf5, 0x78, 0xa1, 0xd3, 0x95, 0x91, 0x8f, 0xbc, 0x29, 0x18, 0xfa, 0x2e,
+ 0x6c, 0x8d, 0x06, 0xe3, 0x29, 0x7a, 0xc4, 0x0e, 0x88, 0x13, 0x8e, 0x73, 0xe1, 0x66, 0x0a, 0x87,
+ 0x19, 0x4a, 0xf9, 0x1b, 0x09, 0x6e, 0x5d, 0xa8, 0x3e, 0x7a, 0x08, 0x1f, 0xf1, 0x5d, 0x1a, 0xef,
+ 0x91, 0xde, 0xd4, 0xad, 0x97, 0x34, 0xac, 0x77, 0x9a, 0xd9, 0xaf, 0x2b, 0xeb, 0xb0, 0x5c, 0x57,
+ 0x8d, 0x98, 0x54, 0x96, 0x68, 0x2e, 0x48, 0xed, 0xae, 0x4d, 0x37, 0xc7, 0xd6, 0x2d, 0xed, 0x48,
+ 0xce, 0xa1, 0xfb, 0xf0, 0x5e, 0x1a, 0x49, 0x13, 0x85, 0x5e, 0xd7, 0xec, 0xba, 0x79, 0x54, 0xd3,
+ 0x0d, 0x9e, 0x32, 0xf2, 0xd4, 0x1d, 0x66, 0xf8, 0x89, 0x6d, 0x5a, 0x87, 0x1a, 0xb6, 0xb1, 0xa6,
+ 0xb6, 0x4d, 0x43, 0x2e, 0x28, 0x7f, 0x57, 0x84, 0xed, 0xd9, 0x76, 0x1a, 0x87, 0xdc, 0x45, 0x5a,
+ 0xfb, 0xe9, 0x90, 0x8b, 0xdc, 0xb1, 0x63, 0xf0, 0x02, 0xa5, 0x79, 0x8d, 0x7d, 0xda, 0x9f, 0xb1,
+ 0x75, 0x69, 0xd7, 0xb8, 0xfa, 0xa6, 0xa1, 0x37, 0xb0, 0x92, 0xea, 0xca, 0xf3, 0x7e, 0xde, 0xd3,
+ 0xeb, 0xa8, 0xc7, 0x6f, 0x16, 0x6e, 0xaa, 0x57, 0x9f, 0x12, 0x8e, 0x0e, 0x61, 0x59, 0x04, 0x4b,
+ 0x16, 0x40, 0x78, 0xea, 0xfa, 0x68, 0xee, 0x5c, 0x3c, 0xce, 0xb2, 0xe0, 0x01, 0xd1, 0xf8, 0xf7,
+ 0xce, 0x13, 0xd8, 0x9c, 0x31, 0x1d, 0x4b, 0x66, 0x43, 0x3f, 0x0a, 0x6d, 0x7f, 0x48, 0x06, 0x6c,
+ 0x9f, 0x8a, 0xb8, 0xc2, 0x20, 0xe6, 0x90, 0x0c, 0x94, 0xff, 0x94, 0xa0, 0x7a, 0x91, 0x11, 0xd1,
+ 0x1e, 0x7c, 0x48, 0xfd, 0xe9, 0x7a, 0xfe, 0x39, 0xab, 0xdc, 0x63, 0xa1, 0xa5, 0x7e, 0xa8, 0x37,
+ 0x1b, 0xb6, 0xa5, 0xd7, 0x3f, 0xd7, 0xac, 0xb6, 0xfd, 0x5c, 0xb7, 0x0e, 0xcd, 0x8e, 0x65, 0xab,
+ 0x8d, 0x4e, 0xd3, 0x92, 0x97, 0xa8, 0x4b, 0xa6, 0x9d, 0x91, 0x13, 0x66, 0x1c, 0x77, 0x13, 0xd6,
+ 0x75, 0xa3, 0x6e, 0x62, 0xac, 0xd5, 0x2d, 0xbb, 0x85, 0xf5, 0xba, 0x26, 0x17, 0xd0, 0xfb, 0x70,
+ 0x8f, 0xa9, 0x3b, 0xc7, 0x99, 0x8b, 0xca, 0xdf, 0x4a, 0x00, 0x13, 0x0b, 0xa2, 0x0f, 0x60, 0x2d,
+ 0x61, 0xff, 0x49, 0xc6, 0x5a, 0x99, 0x58, 0x56, 0x77, 0xd1, 0x43, 0xd8, 0x08, 0x5f, 0xfb, 0x41,
+ 0x64, 0x27, 0x03, 0x73, 0x8e, 0xf7, 0x3a, 0x18, 0xa2, 0x31, 0x81, 0x4f, 0xf2, 0x71, 0xfe, 0xaa,
+ 0xf9, 0xf8, 0x13, 0x40, 0xfc, 0x96, 0x68, 0x4f, 0x27, 0x80, 0x0d, 0x8e, 0x49, 0x4c, 0xa4, 0xfc,
+ 0x18, 0x96, 0x13, 0x1f, 0xe4, 0x68, 0xd5, 0x17, 0x46, 0xce, 0xc9, 0x49, 0xa2, 0xea, 0x63, 0x63,
+ 0xdd, 0x45, 0x37, 0xa1, 0x14, 0xf8, 0x7e, 0x9f, 0x62, 0xb8, 0xd6, 0x4b, 0x74, 0xa8, 0xbb, 0xd4,
+ 0x3b, 0xa8, 0x32, 0xe7, 0x76, 0xe8, 0x7d, 0xc9, 0x15, 0x2e, 0xe2, 0x0a, 0x83, 0xb4, 0xbd, 0x2f,
+ 0x89, 0xf2, 0xab, 0x3c, 0x20, 0xd6, 0xc0, 0xf1, 0xbe, 0x64, 0xe5, 0x4b, 0xdd, 0x1f, 0x9c, 0x78,
+ 0xa7, 0xe8, 0xf7, 0x24, 0xd8, 0x8e, 0x12, 0xe0, 0x49, 0xcf, 0x49, 0x5c, 0xec, 0xe7, 0x07, 0xf9,
+ 0x69, 0x89, 0x29, 0xd0, 0xb8, 0xc7, 0xa4, 0x0d, 0xa2, 0xe0, 0x1c, 0xbf, 0x13, 0xcd, 0xc2, 0xa1,
+ 0x3f, 0x90, 0x60, 0xe7, 0x95, 0xd7, 0xeb, 0xb1, 0xdb, 0xe9, 0xa4, 0x4a, 0xb4, 0xf9, 0x2f, 0x11,
+ 0x53, 0x0e, 0xaf, 0xaa, 0x47, 0x8d, 0x4b, 0x4c, 0x94, 0x9d, 0x07, 0xec, 0x07, 0xae, 0xbe, 0xba,
+ 0x00, 0xb3, 0x73, 0x08, 0x3b, 0x17, 0x6b, 0x8f, 0x64, 0xc8, 0xbf, 0x21, 0xe7, 0x62, 0x3f, 0xe8,
+ 0x4f, 0x5a, 0x01, 0x9d, 0x39, 0xbd, 0x11, 0x11, 0x3b, 0xc1, 0x07, 0x3f, 0xc8, 0x7d, 0x26, 0x29,
+ 0x2f, 0xa1, 0x7a, 0xd1, 0xfc, 0xf4, 0x28, 0xd6, 0xf4, 0x66, 0x93, 0x56, 0xfd, 0xba, 0x71, 0x60,
+ 0xe2, 0x23, 0x7e, 0xe3, 0xe1, 0xbf, 0x32, 0x47, 0xb1, 0x04, 0xf9, 0x23, 0xdd, 0x90, 0x25, 0x54,
+ 0x86, 0xc2, 0x41, 0xa7, 0xd9, 0x94, 0x73, 0xca, 0x9f, 0x16, 0xe0, 0xf6, 0x9c, 0x4e, 0x1f, 0x7a,
+ 0x03, 0x15, 0xd1, 0x42, 0xf4, 0x03, 0x91, 0xa8, 0xf5, 0xeb, 0xb6, 0x0d, 0x33, 0x38, 0x3f, 0xa8,
+ 0xe5, 0xaa, 0x12, 0x9e, 0xc8, 0x47, 0x4f, 0x60, 0x2b, 0xbe, 0x2a, 0xf4, 0x49, 0xf4, 0xda, 0x77,
+ 0x45, 0xf3, 0x90, 0x19, 0x84, 0x11, 0xc7, 0xe5, 0xff, 0x11, 0x43, 0xf3, 0x0f, 0x0c, 0x2a, 0xdc,
+ 0x1d, 0x0d, 0x86, 0x4e, 0x10, 0x12, 0xd7, 0x9e, 0xc9, 0xce, 0x3f, 0xa6, 0xef, 0xc4, 0x44, 0xad,
+ 0x69, 0x11, 0x77, 0xa0, 0x74, 0x46, 0x82, 0x70, 0x7c, 0x81, 0x65, 0x73, 0xc5, 0x20, 0xf4, 0x29,
+ 0x6c, 0x64, 0xda, 0xa9, 0x7e, 0xc0, 0x0f, 0x1f, 0xa3, 0x93, 0x87, 0x99, 0x65, 0xd1, 0x2b, 0x4f,
+ 0xea, 0x14, 0x74, 0x99, 0x0f, 0xb1, 0x5a, 0xfa, 0xb2, 0x2b, 0xcf, 0xb4, 0xeb, 0x61, 0x14, 0x4d,
+ 0xc1, 0x14, 0x17, 0xe4, 0xac, 0x31, 0xd1, 0x7b, 0x70, 0x37, 0xae, 0xbd, 0x5a, 0xd8, 0xac, 0x6b,
+ 0xed, 0xb6, 0x89, 0xa7, 0x6f, 0xda, 0x13, 0x54, 0xdb, 0xc2, 0x7a, 0x8b, 0xd6, 0x7e, 0x37, 0x61,
+ 0x73, 0x02, 0xad, 0x61, 0x55, 0x37, 0x2c, 0xac, 0x69, 0x72, 0x4e, 0xf9, 0xb7, 0x1c, 0x6c, 0x4c,
+ 0xb5, 0x9c, 0xd0, 0x63, 0xd8, 0x9e, 0xd1, 0xbf, 0x9a, 0x04, 0x97, 0xcd, 0xa9, 0x96, 0x94, 0xee,
+ 0xa2, 0x4f, 0x61, 0xeb, 0xcc, 0xe9, 0x79, 0xae, 0xcd, 0x6f, 0x48, 0xe3, 0x36, 0x3a, 0xbf, 0x26,
+ 0x6d, 0x30, 0x5c, 0x9b, 0xa2, 0x44, 0x07, 0x1d, 0x3d, 0x04, 0xc4, 0x19, 0xc8, 0xc0, 0x9d, 0x90,
+ 0xf3, 0x5b, 0xd3, 0x3a, 0xc3, 0x68, 0x03, 0x37, 0x26, 0xae, 0x41, 0x81, 0x65, 0x49, 0xde, 0xdf,
+ 0xd9, 0x5f, 0xc4, 0x41, 0xb9, 0x66, 0x2c, 0x59, 0x32, 0x5e, 0x74, 0x1f, 0xd6, 0xfc, 0xc0, 0x3b,
+ 0xf5, 0x06, 0x4e, 0xcf, 0xe6, 0x37, 0x91, 0x22, 0x8b, 0x7a, 0xab, 0x31, 0xb4, 0x4e, 0x81, 0xe8,
+ 0x7d, 0x58, 0xed, 0x8e, 0x82, 0x80, 0x2e, 0x9c, 0x53, 0x2d, 0x31, 0xaa, 0x15, 0x01, 0xe4, 0x44,
+ 0x7b, 0x13, 0x8f, 0x99, 0x58, 0x87, 0x7f, 0xf2, 0x5a, 0x1f, 0xa6, 0x2d, 0xa3, 0xfc, 0xfd, 0x12,
+ 0xa0, 0xe9, 0x8b, 0xee, 0xec, 0x4f, 0xb2, 0xd2, 0x37, 0xf2, 0x49, 0x16, 0x3d, 0x81, 0xed, 0x58,
+ 0x70, 0x14, 0x38, 0x83, 0xd0, 0xe9, 0xc6, 0x3a, 0xf2, 0xd0, 0x13, 0x9f, 0x42, 0x6b, 0x82, 0xd4,
+ 0xdd, 0xaf, 0x91, 0xbe, 0x54, 0x80, 0xc8, 0x79, 0x6b, 0x3b, 0x7d, 0x66, 0xb0, 0xc2, 0xc2, 0xec,
+ 0x95, 0xc8, 0x79, 0xab, 0x32, 0x26, 0x14, 0x4d, 0x42, 0x83, 0x38, 0x83, 0xc4, 0xb5, 0x5f, 0x9d,
+ 0xb3, 0x3d, 0x5a, 0x7b, 0x54, 0xbb, 0x62, 0x1b, 0x21, 0x13, 0x89, 0x88, 0x5b, 0x3b, 0x1f, 0x87,
+ 0x96, 0x04, 0x0c, 0x7d, 0x3c, 0x6b, 0x1f, 0x97, 0x44, 0x5f, 0x3d, 0xbb, 0x93, 0xe8, 0x7b, 0x17,
+ 0x1e, 0x8c, 0x92, 0x60, 0x99, 0x79, 0x34, 0x7e, 0x08, 0x25, 0x97, 0x0c, 0xfd, 0xd0, 0x8b, 0xaa,
+ 0xe5, 0x05, 0xfa, 0xc9, 0x0d, 0x4e, 0x8b, 0x63, 0x26, 0x74, 0x00, 0xcb, 0x03, 0xdf, 0x0e, 0x5f,
+ 0xfb, 0x3f, 0xb5, 0x4f, 0x08, 0xa9, 0x56, 0x98, 0x8c, 0x0f, 0xe7, 0xca, 0x30, 0xfc, 0xf6, 0x6b,
+ 0xff, 0xa7, 0x07, 0x84, 0xe0, 0xca, 0x20, 0xfe, 0x39, 0xe3, 0x5d, 0x04, 0x5c, 0xf3, 0x5d, 0x44,
+ 0x7f, 0xec, 0xd1, 0x49, 0x63, 0x26, 0xae, 0x98, 0x22, 0xdc, 0x88, 0x76, 0x5e, 0xf6, 0x86, 0x9a,
+ 0xc2, 0x3e, 0x35, 0xcd, 0xa7, 0xec, 0x86, 0x5a, 0x85, 0xad, 0x14, 0xa2, 0xa5, 0x62, 0xcb, 0xd0,
+ 0xb0, 0x9c, 0xab, 0xad, 0xd0, 0x5a, 0x45, 0x74, 0x98, 0x5c, 0xe5, 0x2b, 0x28, 0x32, 0x9d, 0xd0,
+ 0x7b, 0xb0, 0xc2, 0xdc, 0xcf, 0xee, 0x7b, 0xdd, 0xc0, 0x0f, 0xc5, 0xab, 0xa9, 0x65, 0x06, 0x3b,
+ 0x62, 0xa0, 0xc9, 0x61, 0xee, 0x9e, 0xdb, 0x5d, 0xdf, 0x8d, 0x53, 0xef, 0x4a, 0x0c, 0xac, 0xfb,
+ 0x2e, 0x41, 0x1f, 0x03, 0xa2, 0x3c, 0xb4, 0x9e, 0x10, 0x3b, 0x3a, 0x79, 0x3c, 0x25, 0x0b, 0x8c,
+ 0x88, 0x26, 0xce, 0xa9, 0xf2, 0xfb, 0x12, 0x54, 0xc6, 0xe6, 0x45, 0x4f, 0x20, 0x4f, 0xf7, 0x44,
+ 0x5a, 0xd8, 0x90, 0x94, 0x1c, 0xa9, 0x50, 0x3e, 0x21, 0x24, 0xd9, 0x39, 0xf8, 0xf0, 0x72, 0x56,
+ 0x16, 0xca, 0x4a, 0x27, 0x84, 0xfd, 0x50, 0xfe, 0x41, 0x82, 0x92, 0xf0, 0x14, 0xf4, 0x1b, 0x13,
+ 0x07, 0x5b, 0x5c, 0x91, 0xb1, 0x7b, 0xfd, 0x16, 0xdc, 0xe9, 0x7b, 0x03, 0xdb, 0x71, 0xcf, 0x9c,
+ 0x41, 0x77, 0xf2, 0x34, 0x32, 0xf3, 0xd8, 0xec, 0x56, 0xdf, 0x1b, 0xa8, 0x9c, 0xa4, 0x9e, 0xa0,
+ 0xa0, 0xc1, 0x59, 0x87, 0x15, 0x21, 0xeb, 0x3a, 0x2b, 0x5a, 0x16, 0xbc, 0x6c, 0x55, 0xff, 0x98,
+ 0x83, 0x42, 0xbb, 0xe7, 0x2f, 0xf0, 0x3c, 0x29, 0xdd, 0xaa, 0xcb, 0xcd, 0x6d, 0xd5, 0xe5, 0x2f,
+ 0x69, 0xd5, 0x15, 0x16, 0x7b, 0x4e, 0x57, 0x9c, 0xfd, 0x9c, 0xee, 0x00, 0x2a, 0xf1, 0x83, 0xb8,
+ 0x50, 0x94, 0x00, 0x8b, 0xbf, 0xa5, 0x9b, 0xb0, 0xd2, 0x84, 0xc0, 0xea, 0x88, 0xb8, 0x9e, 0xed,
+ 0x53, 0x7f, 0x2d, 0x2d, 0x90, 0x10, 0xea, 0x09, 0xae, 0x23, 0xdf, 0x25, 0x58, 0xee, 0x66, 0x20,
+ 0xca, 0xbf, 0x4b, 0xb0, 0x9e, 0x69, 0xe4, 0x5e, 0xf8, 0x49, 0x93, 0x9a, 0xf6, 0xd4, 0x3b, 0x23,
+ 0x03, 0x7b, 0xe0, 0xf4, 0xe3, 0x13, 0x53, 0x61, 0x10, 0xc3, 0xe9, 0x13, 0xba, 0x35, 0x27, 0x4e,
+ 0xdf, 0xeb, 0x9d, 0x73, 0x3c, 0x3f, 0x27, 0xc0, 0x41, 0x8c, 0xa0, 0x01, 0x25, 0xc7, 0x75, 0x03,
+ 0x12, 0xc6, 0x4f, 0x0b, 0xe7, 0x77, 0x17, 0x5b, 0x7e, 0x18, 0x39, 0x3d, 0x95, 0x73, 0xe0, 0x98,
+ 0x15, 0xdd, 0x81, 0x4a, 0x44, 0x7a, 0x64, 0xf8, 0xda, 0x1f, 0x90, 0xf8, 0xb9, 0xe4, 0x18, 0x40,
+ 0x6b, 0x69, 0xd2, 0x77, 0xbc, 0x9e, 0x78, 0x95, 0xc2, 0x07, 0xca, 0x2f, 0x24, 0x58, 0x4d, 0x89,
+ 0x43, 0x55, 0x28, 0xb1, 0x2c, 0x1e, 0xc4, 0x95, 0x78, 0x3c, 0x44, 0x3b, 0x50, 0xee, 0xf9, 0x5d,
+ 0x67, 0xdc, 0x1b, 0xac, 0xe0, 0xf1, 0x18, 0x6d, 0xc3, 0x52, 0x40, 0x4e, 0x27, 0x9f, 0x3b, 0xc4,
+ 0x88, 0x2e, 0x7d, 0xc8, 0xc4, 0xf3, 0x60, 0x22, 0x1a, 0xd1, 0x1c, 0xc4, 0x42, 0xc9, 0x7d, 0x58,
+ 0x0b, 0xa3, 0x80, 0x90, 0xc8, 0x8e, 0x2d, 0xc0, 0x35, 0x5f, 0xe5, 0x50, 0xa1, 0xd5, 0xde, 0x2f,
+ 0x25, 0x58, 0x4d, 0x35, 0x55, 0xd1, 0xbb, 0xb0, 0x13, 0x37, 0xff, 0xdb, 0x96, 0x6a, 0x75, 0xda,
+ 0x99, 0xa8, 0xb9, 0x0a, 0x95, 0xba, 0x69, 0x1c, 0xe8, 0xf8, 0x48, 0x6b, 0xc8, 0x12, 0x2b, 0x05,
+ 0x35, 0xa3, 0x41, 0xc9, 0x8f, 0x34, 0x5c, 0x3f, 0x54, 0x0d, 0x7a, 0x4f, 0x66, 0x78, 0xf1, 0xc4,
+ 0x16, 0xad, 0x40, 0x99, 0x7f, 0x42, 0x60, 0x7d, 0xbb, 0x65, 0x28, 0x19, 0x26, 0x7b, 0x86, 0x2b,
+ 0x17, 0xd0, 0x3b, 0xb0, 0x21, 0x06, 0x76, 0x4b, 0x33, 0xd4, 0xa6, 0xfe, 0x23, 0xf6, 0x55, 0x04,
+ 0x60, 0xe9, 0x40, 0xd5, 0x9b, 0xec, 0x03, 0x48, 0x15, 0xb6, 0xe2, 0xae, 0x1f, 0x8d, 0xc5, 0xf1,
+ 0x24, 0x72, 0x69, 0xef, 0x1c, 0xd6, 0xd2, 0x8d, 0x4c, 0xb4, 0x0b, 0x77, 0xea, 0x58, 0x6b, 0xe8,
+ 0x56, 0xa2, 0xa7, 0x98, 0xd6, 0xbe, 0x0c, 0x85, 0x63, 0xbd, 0xad, 0xca, 0x12, 0x5a, 0x03, 0x38,
+ 0x52, 0xdb, 0x96, 0x86, 0x29, 0xa9, 0x9c, 0xa3, 0x05, 0xab, 0x7a, 0xa4, 0x61, 0xbd, 0xae, 0x1a,
+ 0xb6, 0xf6, 0xa2, 0x85, 0xb5, 0x76, 0x5b, 0xce, 0x53, 0xdd, 0x1b, 0x7a, 0xbb, 0x6e, 0x1e, 0x6b,
+ 0x58, 0x2e, 0xd0, 0x5b, 0xcd, 0xb3, 0x7a, 0x4d, 0x2e, 0xee, 0xfd, 0x0c, 0xe4, 0xac, 0xaf, 0x53,
+ 0x4b, 0x24, 0x17, 0x6e, 0x1f, 0x99, 0x8d, 0xec, 0xec, 0x33, 0x49, 0xda, 0x2f, 0x8d, 0xfa, 0x21,
+ 0x36, 0x0d, 0xb3, 0xd3, 0x96, 0x25, 0xa4, 0xc0, 0xbb, 0xd3, 0x24, 0x6a, 0x92, 0x26, 0xb7, 0xf7,
+ 0x27, 0x12, 0x6c, 0x4c, 0xd5, 0x96, 0xe8, 0x7d, 0xb8, 0x97, 0xf9, 0x52, 0x34, 0x63, 0xfd, 0x77,
+ 0xe1, 0x56, 0x86, 0xa8, 0xad, 0x1b, 0x4f, 0x9b, 0x9a, 0xdd, 0x69, 0xd3, 0xcc, 0x37, 0xfd, 0xb5,
+ 0xe9, 0xa8, 0xd3, 0xb4, 0x74, 0x86, 0xcd, 0x51, 0xf3, 0x66, 0xb0, 0x1d, 0xa3, 0xa9, 0x1f, 0xe9,
+ 0x96, 0xd6, 0x60, 0x14, 0xf9, 0xbd, 0x3f, 0x93, 0x40, 0xce, 0x56, 0x85, 0xcc, 0x45, 0xb0, 0x16,
+ 0x73, 0xce, 0x74, 0x2a, 0x96, 0x8a, 0xb5, 0x44, 0xce, 0x3e, 0xd6, 0x1b, 0xcc, 0xbd, 0x6e, 0xc3,
+ 0xcd, 0x04, 0xc2, 0x30, 0x13, 0xc8, 0x5c, 0x86, 0x0b, 0x6b, 0x07, 0x1d, 0xa3, 0xc1, 0x7c, 0x2c,
+ 0x8d, 0xe0, 0x2e, 0xa1, 0x35, 0xe4, 0xc2, 0xde, 0x63, 0xa8, 0x8c, 0xe3, 0x3d, 0xda, 0x06, 0x74,
+ 0xa0, 0xbf, 0xd0, 0x1a, 0x36, 0x56, 0x2d, 0xcd, 0x6e, 0x68, 0x07, 0x6a, 0xa7, 0x69, 0xc9, 0x37,
+ 0xa8, 0x67, 0xb4, 0x34, 0x6c, 0xb7, 0x34, 0xdc, 0x36, 0x0d, 0x59, 0x7a, 0xb5, 0xc4, 0xfe, 0xa6,
+ 0xf0, 0xf8, 0x7f, 0x03, 0x00, 0x00, 0xff, 0xff, 0x3f, 0x74, 0xd9, 0x82, 0xb2, 0x30, 0x00, 0x00,
}