mirror of
https://github.com/genuinetools/reg.git
synced 2024-09-17 16:11:01 -04:00
843aebf2c1
Signed-off-by: Jess Frazelle <acidburn@microsoft.com>
955 lines
42 KiB
Go
955 lines
42 KiB
Go
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
// source: google/monitoring/v3/alert.proto
|
|
|
|
package monitoring // import "google.golang.org/genproto/googleapis/monitoring/v3"
|
|
|
|
import proto "github.com/golang/protobuf/proto"
|
|
import fmt "fmt"
|
|
import math "math"
|
|
import duration "github.com/golang/protobuf/ptypes/duration"
|
|
import wrappers "github.com/golang/protobuf/ptypes/wrappers"
|
|
import _ "google.golang.org/genproto/googleapis/api/annotations"
|
|
|
|
// 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
|
|
|
|
// Operators for combining conditions.
|
|
type AlertPolicy_ConditionCombinerType int32
|
|
|
|
const (
|
|
// An unspecified combiner.
|
|
AlertPolicy_COMBINE_UNSPECIFIED AlertPolicy_ConditionCombinerType = 0
|
|
// Combine conditions using the logical `AND` operator. An
|
|
// incident is created only if all conditions are met
|
|
// simultaneously. This combiner is satisfied if all conditions are
|
|
// met, even if they are met on completely different resources.
|
|
AlertPolicy_AND AlertPolicy_ConditionCombinerType = 1
|
|
// Combine conditions using the logical `OR` operator. An incident
|
|
// is created if any of the listed conditions is met.
|
|
AlertPolicy_OR AlertPolicy_ConditionCombinerType = 2
|
|
// Combine conditions using logical `AND` operator, but unlike the regular
|
|
// `AND` option, an incident is created only if all conditions are met
|
|
// simultaneously on at least one resource.
|
|
AlertPolicy_AND_WITH_MATCHING_RESOURCE AlertPolicy_ConditionCombinerType = 3
|
|
)
|
|
|
|
var AlertPolicy_ConditionCombinerType_name = map[int32]string{
|
|
0: "COMBINE_UNSPECIFIED",
|
|
1: "AND",
|
|
2: "OR",
|
|
3: "AND_WITH_MATCHING_RESOURCE",
|
|
}
|
|
var AlertPolicy_ConditionCombinerType_value = map[string]int32{
|
|
"COMBINE_UNSPECIFIED": 0,
|
|
"AND": 1,
|
|
"OR": 2,
|
|
"AND_WITH_MATCHING_RESOURCE": 3,
|
|
}
|
|
|
|
func (x AlertPolicy_ConditionCombinerType) String() string {
|
|
return proto.EnumName(AlertPolicy_ConditionCombinerType_name, int32(x))
|
|
}
|
|
func (AlertPolicy_ConditionCombinerType) EnumDescriptor() ([]byte, []int) {
|
|
return fileDescriptor_alert_17949719c044e638, []int{0, 0}
|
|
}
|
|
|
|
// A description of the conditions under which some aspect of your system is
|
|
// considered to be "unhealthy" and the ways to notify people or services about
|
|
// this state. For an overview of alert policies, see
|
|
// [Introduction to Alerting](/monitoring/alerts/).
|
|
type AlertPolicy struct {
|
|
// Required if the policy exists. The resource name for this policy. The
|
|
// syntax is:
|
|
//
|
|
// projects/[PROJECT_ID]/alertPolicies/[ALERT_POLICY_ID]
|
|
//
|
|
// `[ALERT_POLICY_ID]` is assigned by Stackdriver Monitoring when the policy
|
|
// is created. When calling the
|
|
// [alertPolicies.create][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
|
|
// method, do not include the `name` field in the alerting policy passed as
|
|
// part of the request.
|
|
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
// A short name or phrase used to identify the policy in dashboards,
|
|
// notifications, and incidents. To avoid confusion, don't use the same
|
|
// display name for multiple policies in the same project. The name is
|
|
// limited to 512 Unicode characters.
|
|
DisplayName string `protobuf:"bytes,2,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
|
|
// Documentation that is included with notifications and incidents related to
|
|
// this policy. Best practice is for the documentation to include information
|
|
// to help responders understand, mitigate, escalate, and correct the
|
|
// underlying problems detected by the alerting policy. Notification channels
|
|
// that have limited capacity might not show this documentation.
|
|
Documentation *AlertPolicy_Documentation `protobuf:"bytes,13,opt,name=documentation,proto3" json:"documentation,omitempty"`
|
|
// User-supplied key/value data to be used for organizing and
|
|
// identifying the `AlertPolicy` objects.
|
|
//
|
|
// The field can contain up to 64 entries. Each key and value is limited to
|
|
// 63 Unicode characters or 128 bytes, whichever is smaller. Labels and
|
|
// values can contain only lowercase letters, numerals, underscores, and
|
|
// dashes. Keys must begin with a letter.
|
|
UserLabels map[string]string `protobuf:"bytes,16,rep,name=user_labels,json=userLabels,proto3" json:"user_labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
|
// A list of conditions for the policy. The conditions are combined by AND or
|
|
// OR according to the `combiner` field. If the combined conditions evaluate
|
|
// to true, then an incident is created. A policy can have from one to six
|
|
// conditions.
|
|
Conditions []*AlertPolicy_Condition `protobuf:"bytes,12,rep,name=conditions,proto3" json:"conditions,omitempty"`
|
|
// How to combine the results of multiple conditions
|
|
// to determine if an incident should be opened.
|
|
Combiner AlertPolicy_ConditionCombinerType `protobuf:"varint,6,opt,name=combiner,proto3,enum=google.monitoring.v3.AlertPolicy_ConditionCombinerType" json:"combiner,omitempty"`
|
|
// Whether or not the policy is enabled. On write, the default interpretation
|
|
// if unset is that the policy is enabled. On read, clients should not make
|
|
// any assumption about the state if it has not been populated. The
|
|
// field should always be populated on List and Get operations, unless
|
|
// a field projection has been specified that strips it out.
|
|
Enabled *wrappers.BoolValue `protobuf:"bytes,17,opt,name=enabled,proto3" json:"enabled,omitempty"`
|
|
// Identifies the notification channels to which notifications should be sent
|
|
// when incidents are opened or closed or when new violations occur on
|
|
// an already opened incident. Each element of this array corresponds to
|
|
// the `name` field in each of the
|
|
// [`NotificationChannel`][google.monitoring.v3.NotificationChannel]
|
|
// objects that are returned from the [`ListNotificationChannels`]
|
|
// [google.monitoring.v3.NotificationChannelService.ListNotificationChannels]
|
|
// method. The syntax of the entries in this field is:
|
|
//
|
|
// projects/[PROJECT_ID]/notificationChannels/[CHANNEL_ID]
|
|
NotificationChannels []string `protobuf:"bytes,14,rep,name=notification_channels,json=notificationChannels,proto3" json:"notification_channels,omitempty"`
|
|
// A read-only record of the creation of the alerting policy. If provided
|
|
// in a call to create or update, this field will be ignored.
|
|
CreationRecord *MutationRecord `protobuf:"bytes,10,opt,name=creation_record,json=creationRecord,proto3" json:"creation_record,omitempty"`
|
|
// A read-only record of the most recent change to the alerting policy. If
|
|
// provided in a call to create or update, this field will be ignored.
|
|
MutationRecord *MutationRecord `protobuf:"bytes,11,opt,name=mutation_record,json=mutationRecord,proto3" json:"mutation_record,omitempty"`
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
XXX_unrecognized []byte `json:"-"`
|
|
XXX_sizecache int32 `json:"-"`
|
|
}
|
|
|
|
func (m *AlertPolicy) Reset() { *m = AlertPolicy{} }
|
|
func (m *AlertPolicy) String() string { return proto.CompactTextString(m) }
|
|
func (*AlertPolicy) ProtoMessage() {}
|
|
func (*AlertPolicy) Descriptor() ([]byte, []int) {
|
|
return fileDescriptor_alert_17949719c044e638, []int{0}
|
|
}
|
|
func (m *AlertPolicy) XXX_Unmarshal(b []byte) error {
|
|
return xxx_messageInfo_AlertPolicy.Unmarshal(m, b)
|
|
}
|
|
func (m *AlertPolicy) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
return xxx_messageInfo_AlertPolicy.Marshal(b, m, deterministic)
|
|
}
|
|
func (dst *AlertPolicy) XXX_Merge(src proto.Message) {
|
|
xxx_messageInfo_AlertPolicy.Merge(dst, src)
|
|
}
|
|
func (m *AlertPolicy) XXX_Size() int {
|
|
return xxx_messageInfo_AlertPolicy.Size(m)
|
|
}
|
|
func (m *AlertPolicy) XXX_DiscardUnknown() {
|
|
xxx_messageInfo_AlertPolicy.DiscardUnknown(m)
|
|
}
|
|
|
|
var xxx_messageInfo_AlertPolicy proto.InternalMessageInfo
|
|
|
|
func (m *AlertPolicy) GetName() string {
|
|
if m != nil {
|
|
return m.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (m *AlertPolicy) GetDisplayName() string {
|
|
if m != nil {
|
|
return m.DisplayName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (m *AlertPolicy) GetDocumentation() *AlertPolicy_Documentation {
|
|
if m != nil {
|
|
return m.Documentation
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy) GetUserLabels() map[string]string {
|
|
if m != nil {
|
|
return m.UserLabels
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy) GetConditions() []*AlertPolicy_Condition {
|
|
if m != nil {
|
|
return m.Conditions
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy) GetCombiner() AlertPolicy_ConditionCombinerType {
|
|
if m != nil {
|
|
return m.Combiner
|
|
}
|
|
return AlertPolicy_COMBINE_UNSPECIFIED
|
|
}
|
|
|
|
func (m *AlertPolicy) GetEnabled() *wrappers.BoolValue {
|
|
if m != nil {
|
|
return m.Enabled
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy) GetNotificationChannels() []string {
|
|
if m != nil {
|
|
return m.NotificationChannels
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy) GetCreationRecord() *MutationRecord {
|
|
if m != nil {
|
|
return m.CreationRecord
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy) GetMutationRecord() *MutationRecord {
|
|
if m != nil {
|
|
return m.MutationRecord
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// A content string and a MIME type that describes the content string's
|
|
// format.
|
|
type AlertPolicy_Documentation struct {
|
|
// The text of the documentation, interpreted according to `mime_type`.
|
|
// The content may not exceed 8,192 Unicode characters and may not exceed
|
|
// more than 10,240 bytes when encoded in UTF-8 format, whichever is
|
|
// smaller.
|
|
Content string `protobuf:"bytes,1,opt,name=content,proto3" json:"content,omitempty"`
|
|
// The format of the `content` field. Presently, only the value
|
|
// `"text/markdown"` is supported. See
|
|
// [Markdown](https://en.wikipedia.org/wiki/Markdown) for more information.
|
|
MimeType string `protobuf:"bytes,2,opt,name=mime_type,json=mimeType,proto3" json:"mime_type,omitempty"`
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
XXX_unrecognized []byte `json:"-"`
|
|
XXX_sizecache int32 `json:"-"`
|
|
}
|
|
|
|
func (m *AlertPolicy_Documentation) Reset() { *m = AlertPolicy_Documentation{} }
|
|
func (m *AlertPolicy_Documentation) String() string { return proto.CompactTextString(m) }
|
|
func (*AlertPolicy_Documentation) ProtoMessage() {}
|
|
func (*AlertPolicy_Documentation) Descriptor() ([]byte, []int) {
|
|
return fileDescriptor_alert_17949719c044e638, []int{0, 0}
|
|
}
|
|
func (m *AlertPolicy_Documentation) XXX_Unmarshal(b []byte) error {
|
|
return xxx_messageInfo_AlertPolicy_Documentation.Unmarshal(m, b)
|
|
}
|
|
func (m *AlertPolicy_Documentation) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
return xxx_messageInfo_AlertPolicy_Documentation.Marshal(b, m, deterministic)
|
|
}
|
|
func (dst *AlertPolicy_Documentation) XXX_Merge(src proto.Message) {
|
|
xxx_messageInfo_AlertPolicy_Documentation.Merge(dst, src)
|
|
}
|
|
func (m *AlertPolicy_Documentation) XXX_Size() int {
|
|
return xxx_messageInfo_AlertPolicy_Documentation.Size(m)
|
|
}
|
|
func (m *AlertPolicy_Documentation) XXX_DiscardUnknown() {
|
|
xxx_messageInfo_AlertPolicy_Documentation.DiscardUnknown(m)
|
|
}
|
|
|
|
var xxx_messageInfo_AlertPolicy_Documentation proto.InternalMessageInfo
|
|
|
|
func (m *AlertPolicy_Documentation) GetContent() string {
|
|
if m != nil {
|
|
return m.Content
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (m *AlertPolicy_Documentation) GetMimeType() string {
|
|
if m != nil {
|
|
return m.MimeType
|
|
}
|
|
return ""
|
|
}
|
|
|
|
// A condition is a true/false test that determines when an alerting policy
|
|
// should open an incident. If a condition evaluates to true, it signifies
|
|
// that something is wrong.
|
|
type AlertPolicy_Condition struct {
|
|
// Required if the condition exists. The unique resource name for this
|
|
// condition. Its syntax is:
|
|
//
|
|
// projects/[PROJECT_ID]/alertPolicies/[POLICY_ID]/conditions/[CONDITION_ID]
|
|
//
|
|
// `[CONDITION_ID]` is assigned by Stackdriver Monitoring when the
|
|
// condition is created as part of a new or updated alerting policy.
|
|
//
|
|
// When calling the
|
|
// [alertPolicies.create][google.monitoring.v3.AlertPolicyService.CreateAlertPolicy]
|
|
// method, do not include the `name` field in the conditions of the
|
|
// requested alerting policy. Stackdriver Monitoring creates the
|
|
// condition identifiers and includes them in the new policy.
|
|
//
|
|
// When calling the
|
|
// [alertPolicies.update][google.monitoring.v3.AlertPolicyService.UpdateAlertPolicy]
|
|
// method to update a policy, including a condition `name` causes the
|
|
// existing condition to be updated. Conditions without names are added to
|
|
// the updated policy. Existing conditions are deleted if they are not
|
|
// updated.
|
|
//
|
|
// Best practice is to preserve `[CONDITION_ID]` if you make only small
|
|
// changes, such as those to condition thresholds, durations, or trigger
|
|
// values. Otherwise, treat the change as a new condition and let the
|
|
// existing condition be deleted.
|
|
Name string `protobuf:"bytes,12,opt,name=name,proto3" json:"name,omitempty"`
|
|
// A short name or phrase used to identify the condition in dashboards,
|
|
// notifications, and incidents. To avoid confusion, don't use the same
|
|
// display name for multiple conditions in the same policy.
|
|
DisplayName string `protobuf:"bytes,6,opt,name=display_name,json=displayName,proto3" json:"display_name,omitempty"`
|
|
// Only one of the following condition types will be specified.
|
|
//
|
|
// Types that are valid to be assigned to Condition:
|
|
// *AlertPolicy_Condition_ConditionThreshold
|
|
// *AlertPolicy_Condition_ConditionAbsent
|
|
Condition isAlertPolicy_Condition_Condition `protobuf_oneof:"condition"`
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
XXX_unrecognized []byte `json:"-"`
|
|
XXX_sizecache int32 `json:"-"`
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition) Reset() { *m = AlertPolicy_Condition{} }
|
|
func (m *AlertPolicy_Condition) String() string { return proto.CompactTextString(m) }
|
|
func (*AlertPolicy_Condition) ProtoMessage() {}
|
|
func (*AlertPolicy_Condition) Descriptor() ([]byte, []int) {
|
|
return fileDescriptor_alert_17949719c044e638, []int{0, 1}
|
|
}
|
|
func (m *AlertPolicy_Condition) XXX_Unmarshal(b []byte) error {
|
|
return xxx_messageInfo_AlertPolicy_Condition.Unmarshal(m, b)
|
|
}
|
|
func (m *AlertPolicy_Condition) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
return xxx_messageInfo_AlertPolicy_Condition.Marshal(b, m, deterministic)
|
|
}
|
|
func (dst *AlertPolicy_Condition) XXX_Merge(src proto.Message) {
|
|
xxx_messageInfo_AlertPolicy_Condition.Merge(dst, src)
|
|
}
|
|
func (m *AlertPolicy_Condition) XXX_Size() int {
|
|
return xxx_messageInfo_AlertPolicy_Condition.Size(m)
|
|
}
|
|
func (m *AlertPolicy_Condition) XXX_DiscardUnknown() {
|
|
xxx_messageInfo_AlertPolicy_Condition.DiscardUnknown(m)
|
|
}
|
|
|
|
var xxx_messageInfo_AlertPolicy_Condition proto.InternalMessageInfo
|
|
|
|
type isAlertPolicy_Condition_Condition interface {
|
|
isAlertPolicy_Condition_Condition()
|
|
}
|
|
|
|
type AlertPolicy_Condition_ConditionThreshold struct {
|
|
ConditionThreshold *AlertPolicy_Condition_MetricThreshold `protobuf:"bytes,1,opt,name=condition_threshold,json=conditionThreshold,proto3,oneof"`
|
|
}
|
|
type AlertPolicy_Condition_ConditionAbsent struct {
|
|
ConditionAbsent *AlertPolicy_Condition_MetricAbsence `protobuf:"bytes,2,opt,name=condition_absent,json=conditionAbsent,proto3,oneof"`
|
|
}
|
|
|
|
func (*AlertPolicy_Condition_ConditionThreshold) isAlertPolicy_Condition_Condition() {}
|
|
func (*AlertPolicy_Condition_ConditionAbsent) isAlertPolicy_Condition_Condition() {}
|
|
|
|
func (m *AlertPolicy_Condition) GetCondition() isAlertPolicy_Condition_Condition {
|
|
if m != nil {
|
|
return m.Condition
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition) GetName() string {
|
|
if m != nil {
|
|
return m.Name
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition) GetDisplayName() string {
|
|
if m != nil {
|
|
return m.DisplayName
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition) GetConditionThreshold() *AlertPolicy_Condition_MetricThreshold {
|
|
if x, ok := m.GetCondition().(*AlertPolicy_Condition_ConditionThreshold); ok {
|
|
return x.ConditionThreshold
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition) GetConditionAbsent() *AlertPolicy_Condition_MetricAbsence {
|
|
if x, ok := m.GetCondition().(*AlertPolicy_Condition_ConditionAbsent); ok {
|
|
return x.ConditionAbsent
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// XXX_OneofFuncs is for the internal use of the proto package.
|
|
func (*AlertPolicy_Condition) 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 _AlertPolicy_Condition_OneofMarshaler, _AlertPolicy_Condition_OneofUnmarshaler, _AlertPolicy_Condition_OneofSizer, []interface{}{
|
|
(*AlertPolicy_Condition_ConditionThreshold)(nil),
|
|
(*AlertPolicy_Condition_ConditionAbsent)(nil),
|
|
}
|
|
}
|
|
|
|
func _AlertPolicy_Condition_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
|
|
m := msg.(*AlertPolicy_Condition)
|
|
// condition
|
|
switch x := m.Condition.(type) {
|
|
case *AlertPolicy_Condition_ConditionThreshold:
|
|
b.EncodeVarint(1<<3 | proto.WireBytes)
|
|
if err := b.EncodeMessage(x.ConditionThreshold); err != nil {
|
|
return err
|
|
}
|
|
case *AlertPolicy_Condition_ConditionAbsent:
|
|
b.EncodeVarint(2<<3 | proto.WireBytes)
|
|
if err := b.EncodeMessage(x.ConditionAbsent); err != nil {
|
|
return err
|
|
}
|
|
case nil:
|
|
default:
|
|
return fmt.Errorf("AlertPolicy_Condition.Condition has unexpected type %T", x)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func _AlertPolicy_Condition_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
|
|
m := msg.(*AlertPolicy_Condition)
|
|
switch tag {
|
|
case 1: // condition.condition_threshold
|
|
if wire != proto.WireBytes {
|
|
return true, proto.ErrInternalBadWireType
|
|
}
|
|
msg := new(AlertPolicy_Condition_MetricThreshold)
|
|
err := b.DecodeMessage(msg)
|
|
m.Condition = &AlertPolicy_Condition_ConditionThreshold{msg}
|
|
return true, err
|
|
case 2: // condition.condition_absent
|
|
if wire != proto.WireBytes {
|
|
return true, proto.ErrInternalBadWireType
|
|
}
|
|
msg := new(AlertPolicy_Condition_MetricAbsence)
|
|
err := b.DecodeMessage(msg)
|
|
m.Condition = &AlertPolicy_Condition_ConditionAbsent{msg}
|
|
return true, err
|
|
default:
|
|
return false, nil
|
|
}
|
|
}
|
|
|
|
func _AlertPolicy_Condition_OneofSizer(msg proto.Message) (n int) {
|
|
m := msg.(*AlertPolicy_Condition)
|
|
// condition
|
|
switch x := m.Condition.(type) {
|
|
case *AlertPolicy_Condition_ConditionThreshold:
|
|
s := proto.Size(x.ConditionThreshold)
|
|
n += 1 // tag and wire
|
|
n += proto.SizeVarint(uint64(s))
|
|
n += s
|
|
case *AlertPolicy_Condition_ConditionAbsent:
|
|
s := proto.Size(x.ConditionAbsent)
|
|
n += 1 // tag and wire
|
|
n += proto.SizeVarint(uint64(s))
|
|
n += s
|
|
case nil:
|
|
default:
|
|
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
|
|
}
|
|
return n
|
|
}
|
|
|
|
// Specifies how many time series must fail a predicate to trigger a
|
|
// condition. If not specified, then a `{count: 1}` trigger is used.
|
|
type AlertPolicy_Condition_Trigger struct {
|
|
// A type of trigger.
|
|
//
|
|
// Types that are valid to be assigned to Type:
|
|
// *AlertPolicy_Condition_Trigger_Count
|
|
// *AlertPolicy_Condition_Trigger_Percent
|
|
Type isAlertPolicy_Condition_Trigger_Type `protobuf_oneof:"type"`
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
XXX_unrecognized []byte `json:"-"`
|
|
XXX_sizecache int32 `json:"-"`
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_Trigger) Reset() { *m = AlertPolicy_Condition_Trigger{} }
|
|
func (m *AlertPolicy_Condition_Trigger) String() string { return proto.CompactTextString(m) }
|
|
func (*AlertPolicy_Condition_Trigger) ProtoMessage() {}
|
|
func (*AlertPolicy_Condition_Trigger) Descriptor() ([]byte, []int) {
|
|
return fileDescriptor_alert_17949719c044e638, []int{0, 1, 0}
|
|
}
|
|
func (m *AlertPolicy_Condition_Trigger) XXX_Unmarshal(b []byte) error {
|
|
return xxx_messageInfo_AlertPolicy_Condition_Trigger.Unmarshal(m, b)
|
|
}
|
|
func (m *AlertPolicy_Condition_Trigger) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
return xxx_messageInfo_AlertPolicy_Condition_Trigger.Marshal(b, m, deterministic)
|
|
}
|
|
func (dst *AlertPolicy_Condition_Trigger) XXX_Merge(src proto.Message) {
|
|
xxx_messageInfo_AlertPolicy_Condition_Trigger.Merge(dst, src)
|
|
}
|
|
func (m *AlertPolicy_Condition_Trigger) XXX_Size() int {
|
|
return xxx_messageInfo_AlertPolicy_Condition_Trigger.Size(m)
|
|
}
|
|
func (m *AlertPolicy_Condition_Trigger) XXX_DiscardUnknown() {
|
|
xxx_messageInfo_AlertPolicy_Condition_Trigger.DiscardUnknown(m)
|
|
}
|
|
|
|
var xxx_messageInfo_AlertPolicy_Condition_Trigger proto.InternalMessageInfo
|
|
|
|
type isAlertPolicy_Condition_Trigger_Type interface {
|
|
isAlertPolicy_Condition_Trigger_Type()
|
|
}
|
|
|
|
type AlertPolicy_Condition_Trigger_Count struct {
|
|
Count int32 `protobuf:"varint,1,opt,name=count,proto3,oneof"`
|
|
}
|
|
type AlertPolicy_Condition_Trigger_Percent struct {
|
|
Percent float64 `protobuf:"fixed64,2,opt,name=percent,proto3,oneof"`
|
|
}
|
|
|
|
func (*AlertPolicy_Condition_Trigger_Count) isAlertPolicy_Condition_Trigger_Type() {}
|
|
func (*AlertPolicy_Condition_Trigger_Percent) isAlertPolicy_Condition_Trigger_Type() {}
|
|
|
|
func (m *AlertPolicy_Condition_Trigger) GetType() isAlertPolicy_Condition_Trigger_Type {
|
|
if m != nil {
|
|
return m.Type
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_Trigger) GetCount() int32 {
|
|
if x, ok := m.GetType().(*AlertPolicy_Condition_Trigger_Count); ok {
|
|
return x.Count
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_Trigger) GetPercent() float64 {
|
|
if x, ok := m.GetType().(*AlertPolicy_Condition_Trigger_Percent); ok {
|
|
return x.Percent
|
|
}
|
|
return 0
|
|
}
|
|
|
|
// XXX_OneofFuncs is for the internal use of the proto package.
|
|
func (*AlertPolicy_Condition_Trigger) 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 _AlertPolicy_Condition_Trigger_OneofMarshaler, _AlertPolicy_Condition_Trigger_OneofUnmarshaler, _AlertPolicy_Condition_Trigger_OneofSizer, []interface{}{
|
|
(*AlertPolicy_Condition_Trigger_Count)(nil),
|
|
(*AlertPolicy_Condition_Trigger_Percent)(nil),
|
|
}
|
|
}
|
|
|
|
func _AlertPolicy_Condition_Trigger_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
|
|
m := msg.(*AlertPolicy_Condition_Trigger)
|
|
// type
|
|
switch x := m.Type.(type) {
|
|
case *AlertPolicy_Condition_Trigger_Count:
|
|
b.EncodeVarint(1<<3 | proto.WireVarint)
|
|
b.EncodeVarint(uint64(x.Count))
|
|
case *AlertPolicy_Condition_Trigger_Percent:
|
|
b.EncodeVarint(2<<3 | proto.WireFixed64)
|
|
b.EncodeFixed64(math.Float64bits(x.Percent))
|
|
case nil:
|
|
default:
|
|
return fmt.Errorf("AlertPolicy_Condition_Trigger.Type has unexpected type %T", x)
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func _AlertPolicy_Condition_Trigger_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
|
|
m := msg.(*AlertPolicy_Condition_Trigger)
|
|
switch tag {
|
|
case 1: // type.count
|
|
if wire != proto.WireVarint {
|
|
return true, proto.ErrInternalBadWireType
|
|
}
|
|
x, err := b.DecodeVarint()
|
|
m.Type = &AlertPolicy_Condition_Trigger_Count{int32(x)}
|
|
return true, err
|
|
case 2: // type.percent
|
|
if wire != proto.WireFixed64 {
|
|
return true, proto.ErrInternalBadWireType
|
|
}
|
|
x, err := b.DecodeFixed64()
|
|
m.Type = &AlertPolicy_Condition_Trigger_Percent{math.Float64frombits(x)}
|
|
return true, err
|
|
default:
|
|
return false, nil
|
|
}
|
|
}
|
|
|
|
func _AlertPolicy_Condition_Trigger_OneofSizer(msg proto.Message) (n int) {
|
|
m := msg.(*AlertPolicy_Condition_Trigger)
|
|
// type
|
|
switch x := m.Type.(type) {
|
|
case *AlertPolicy_Condition_Trigger_Count:
|
|
n += 1 // tag and wire
|
|
n += proto.SizeVarint(uint64(x.Count))
|
|
case *AlertPolicy_Condition_Trigger_Percent:
|
|
n += 1 // tag and wire
|
|
n += 8
|
|
case nil:
|
|
default:
|
|
panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
|
|
}
|
|
return n
|
|
}
|
|
|
|
// A condition type that compares a collection of time series
|
|
// against a threshold.
|
|
type AlertPolicy_Condition_MetricThreshold struct {
|
|
// A [filter](/monitoring/api/v3/filters) that
|
|
// identifies which time series should be compared with the threshold.
|
|
//
|
|
// The filter is similar to the one that is specified in the
|
|
// [`MetricService.ListTimeSeries`
|
|
// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
|
|
// call is useful to verify the time series that will be retrieved /
|
|
// processed) and must specify the metric type and optionally may contain
|
|
// restrictions on resource type, resource labels, and metric labels.
|
|
// This field may not exceed 2048 Unicode characters in length.
|
|
Filter string `protobuf:"bytes,2,opt,name=filter,proto3" json:"filter,omitempty"`
|
|
// Specifies the alignment of data points in individual time series as
|
|
// well as how to combine the retrieved time series together (such as
|
|
// when aggregating multiple streams on each resource to a single
|
|
// stream for each resource or when aggregating streams across all
|
|
// members of a group of resrouces). Multiple aggregations
|
|
// are applied in the order specified.
|
|
//
|
|
// This field is similar to the one in the
|
|
// [`MetricService.ListTimeSeries` request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).
|
|
// It is advisable to use the `ListTimeSeries` method when debugging this field.
|
|
Aggregations []*Aggregation `protobuf:"bytes,8,rep,name=aggregations,proto3" json:"aggregations,omitempty"`
|
|
// A [filter](/monitoring/api/v3/filters) that identifies a time
|
|
// series that should be used as the denominator of a ratio that will be
|
|
// compared with the threshold. If a `denominator_filter` is specified,
|
|
// the time series specified by the `filter` field will be used as the
|
|
// numerator.
|
|
//
|
|
// The filter is similar to the one that is specified in the
|
|
// [`MetricService.ListTimeSeries`
|
|
// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
|
|
// call is useful to verify the time series that will be retrieved /
|
|
// processed) and must specify the metric type and optionally may contain
|
|
// restrictions on resource type, resource labels, and metric labels.
|
|
// This field may not exceed 2048 Unicode characters in length.
|
|
DenominatorFilter string `protobuf:"bytes,9,opt,name=denominator_filter,json=denominatorFilter,proto3" json:"denominator_filter,omitempty"`
|
|
// Specifies the alignment of data points in individual time series
|
|
// selected by `denominatorFilter` as
|
|
// well as how to combine the retrieved time series together (such as
|
|
// when aggregating multiple streams on each resource to a single
|
|
// stream for each resource or when aggregating streams across all
|
|
// members of a group of resources).
|
|
//
|
|
// When computing ratios, the `aggregations` and
|
|
// `denominator_aggregations` fields must use the same alignment period
|
|
// and produce time series that have the same periodicity and labels.
|
|
//
|
|
// This field is similar to the one in the
|
|
// [`MetricService.ListTimeSeries`
|
|
// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list). It
|
|
// is advisable to use the `ListTimeSeries` method when debugging this
|
|
// field.
|
|
DenominatorAggregations []*Aggregation `protobuf:"bytes,10,rep,name=denominator_aggregations,json=denominatorAggregations,proto3" json:"denominator_aggregations,omitempty"`
|
|
// The comparison to apply between the time series (indicated by `filter`
|
|
// and `aggregation`) and the threshold (indicated by `threshold_value`).
|
|
// The comparison is applied on each time series, with the time series
|
|
// on the left-hand side and the threshold on the right-hand side.
|
|
//
|
|
// Only `COMPARISON_LT` and `COMPARISON_GT` are supported currently.
|
|
Comparison ComparisonType `protobuf:"varint,4,opt,name=comparison,proto3,enum=google.monitoring.v3.ComparisonType" json:"comparison,omitempty"`
|
|
// A value against which to compare the time series.
|
|
ThresholdValue float64 `protobuf:"fixed64,5,opt,name=threshold_value,json=thresholdValue,proto3" json:"threshold_value,omitempty"`
|
|
// The amount of time that a time series must violate the
|
|
// threshold to be considered failing. Currently, only values
|
|
// that are a multiple of a minute--e.g. 60, 120, or 300
|
|
// seconds--are supported. If an invalid value is given, an
|
|
// error will be returned. The `Duration.nanos` field is
|
|
// ignored. When choosing a duration, it is useful to keep in mind the
|
|
// frequency of the underlying time series data (which may also be
|
|
// affected by any alignments specified in the `aggregation` field);
|
|
// a good duration is long enough so that a single outlier does not
|
|
// generate spurious alerts, but short enough that unhealthy states
|
|
// are detected and alerted on quickly.
|
|
Duration *duration.Duration `protobuf:"bytes,6,opt,name=duration,proto3" json:"duration,omitempty"`
|
|
// The number/percent of time series for which the comparison must hold
|
|
// in order for the condition to trigger. If unspecified, then the
|
|
// condition will trigger if the comparison is true for any of the
|
|
// time series that have been identified by `filter` and `aggregations`,
|
|
// or by the ratio, if `denominator_filter` and `denominator_aggregations`
|
|
// are specified.
|
|
Trigger *AlertPolicy_Condition_Trigger `protobuf:"bytes,7,opt,name=trigger,proto3" json:"trigger,omitempty"`
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
XXX_unrecognized []byte `json:"-"`
|
|
XXX_sizecache int32 `json:"-"`
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricThreshold) Reset() { *m = AlertPolicy_Condition_MetricThreshold{} }
|
|
func (m *AlertPolicy_Condition_MetricThreshold) String() string { return proto.CompactTextString(m) }
|
|
func (*AlertPolicy_Condition_MetricThreshold) ProtoMessage() {}
|
|
func (*AlertPolicy_Condition_MetricThreshold) Descriptor() ([]byte, []int) {
|
|
return fileDescriptor_alert_17949719c044e638, []int{0, 1, 1}
|
|
}
|
|
func (m *AlertPolicy_Condition_MetricThreshold) XXX_Unmarshal(b []byte) error {
|
|
return xxx_messageInfo_AlertPolicy_Condition_MetricThreshold.Unmarshal(m, b)
|
|
}
|
|
func (m *AlertPolicy_Condition_MetricThreshold) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
return xxx_messageInfo_AlertPolicy_Condition_MetricThreshold.Marshal(b, m, deterministic)
|
|
}
|
|
func (dst *AlertPolicy_Condition_MetricThreshold) XXX_Merge(src proto.Message) {
|
|
xxx_messageInfo_AlertPolicy_Condition_MetricThreshold.Merge(dst, src)
|
|
}
|
|
func (m *AlertPolicy_Condition_MetricThreshold) XXX_Size() int {
|
|
return xxx_messageInfo_AlertPolicy_Condition_MetricThreshold.Size(m)
|
|
}
|
|
func (m *AlertPolicy_Condition_MetricThreshold) XXX_DiscardUnknown() {
|
|
xxx_messageInfo_AlertPolicy_Condition_MetricThreshold.DiscardUnknown(m)
|
|
}
|
|
|
|
var xxx_messageInfo_AlertPolicy_Condition_MetricThreshold proto.InternalMessageInfo
|
|
|
|
func (m *AlertPolicy_Condition_MetricThreshold) GetFilter() string {
|
|
if m != nil {
|
|
return m.Filter
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricThreshold) GetAggregations() []*Aggregation {
|
|
if m != nil {
|
|
return m.Aggregations
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricThreshold) GetDenominatorFilter() string {
|
|
if m != nil {
|
|
return m.DenominatorFilter
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricThreshold) GetDenominatorAggregations() []*Aggregation {
|
|
if m != nil {
|
|
return m.DenominatorAggregations
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricThreshold) GetComparison() ComparisonType {
|
|
if m != nil {
|
|
return m.Comparison
|
|
}
|
|
return ComparisonType_COMPARISON_UNSPECIFIED
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricThreshold) GetThresholdValue() float64 {
|
|
if m != nil {
|
|
return m.ThresholdValue
|
|
}
|
|
return 0
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricThreshold) GetDuration() *duration.Duration {
|
|
if m != nil {
|
|
return m.Duration
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricThreshold) GetTrigger() *AlertPolicy_Condition_Trigger {
|
|
if m != nil {
|
|
return m.Trigger
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// A condition type that checks that monitored resources
|
|
// are reporting data. The configuration defines a metric and
|
|
// a set of monitored resources. The predicate is considered in violation
|
|
// when a time series for the specified metric of a monitored
|
|
// resource does not include any data in the specified `duration`.
|
|
type AlertPolicy_Condition_MetricAbsence struct {
|
|
// A [filter](/monitoring/api/v3/filters) that
|
|
// identifies which time series should be compared with the threshold.
|
|
//
|
|
// The filter is similar to the one that is specified in the
|
|
// [`MetricService.ListTimeSeries`
|
|
// request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list) (that
|
|
// call is useful to verify the time series that will be retrieved /
|
|
// processed) and must specify the metric type and optionally may contain
|
|
// restrictions on resource type, resource labels, and metric labels.
|
|
// This field may not exceed 2048 Unicode characters in length.
|
|
Filter string `protobuf:"bytes,1,opt,name=filter,proto3" json:"filter,omitempty"`
|
|
// Specifies the alignment of data points in individual time series as
|
|
// well as how to combine the retrieved time series together (such as
|
|
// when aggregating multiple streams on each resource to a single
|
|
// stream for each resource or when aggregating streams across all
|
|
// members of a group of resrouces). Multiple aggregations
|
|
// are applied in the order specified.
|
|
//
|
|
// This field is similar to the
|
|
// one in the [`MetricService.ListTimeSeries` request](/monitoring/api/ref_v3/rest/v3/projects.timeSeries/list).
|
|
// It is advisable to use the `ListTimeSeries` method when debugging this field.
|
|
Aggregations []*Aggregation `protobuf:"bytes,5,rep,name=aggregations,proto3" json:"aggregations,omitempty"`
|
|
// The amount of time that a time series must fail to report new
|
|
// data to be considered failing. Currently, only values that
|
|
// are a multiple of a minute--e.g. 60, 120, or 300
|
|
// seconds--are supported. If an invalid value is given, an
|
|
// error will be returned. The `Duration.nanos` field is
|
|
// ignored.
|
|
Duration *duration.Duration `protobuf:"bytes,2,opt,name=duration,proto3" json:"duration,omitempty"`
|
|
// The number/percent of time series for which the comparison must hold
|
|
// in order for the condition to trigger. If unspecified, then the
|
|
// condition will trigger if the comparison is true for any of the
|
|
// time series that have been identified by `filter` and `aggregations`.
|
|
Trigger *AlertPolicy_Condition_Trigger `protobuf:"bytes,3,opt,name=trigger,proto3" json:"trigger,omitempty"`
|
|
XXX_NoUnkeyedLiteral struct{} `json:"-"`
|
|
XXX_unrecognized []byte `json:"-"`
|
|
XXX_sizecache int32 `json:"-"`
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricAbsence) Reset() { *m = AlertPolicy_Condition_MetricAbsence{} }
|
|
func (m *AlertPolicy_Condition_MetricAbsence) String() string { return proto.CompactTextString(m) }
|
|
func (*AlertPolicy_Condition_MetricAbsence) ProtoMessage() {}
|
|
func (*AlertPolicy_Condition_MetricAbsence) Descriptor() ([]byte, []int) {
|
|
return fileDescriptor_alert_17949719c044e638, []int{0, 1, 2}
|
|
}
|
|
func (m *AlertPolicy_Condition_MetricAbsence) XXX_Unmarshal(b []byte) error {
|
|
return xxx_messageInfo_AlertPolicy_Condition_MetricAbsence.Unmarshal(m, b)
|
|
}
|
|
func (m *AlertPolicy_Condition_MetricAbsence) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
|
|
return xxx_messageInfo_AlertPolicy_Condition_MetricAbsence.Marshal(b, m, deterministic)
|
|
}
|
|
func (dst *AlertPolicy_Condition_MetricAbsence) XXX_Merge(src proto.Message) {
|
|
xxx_messageInfo_AlertPolicy_Condition_MetricAbsence.Merge(dst, src)
|
|
}
|
|
func (m *AlertPolicy_Condition_MetricAbsence) XXX_Size() int {
|
|
return xxx_messageInfo_AlertPolicy_Condition_MetricAbsence.Size(m)
|
|
}
|
|
func (m *AlertPolicy_Condition_MetricAbsence) XXX_DiscardUnknown() {
|
|
xxx_messageInfo_AlertPolicy_Condition_MetricAbsence.DiscardUnknown(m)
|
|
}
|
|
|
|
var xxx_messageInfo_AlertPolicy_Condition_MetricAbsence proto.InternalMessageInfo
|
|
|
|
func (m *AlertPolicy_Condition_MetricAbsence) GetFilter() string {
|
|
if m != nil {
|
|
return m.Filter
|
|
}
|
|
return ""
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricAbsence) GetAggregations() []*Aggregation {
|
|
if m != nil {
|
|
return m.Aggregations
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricAbsence) GetDuration() *duration.Duration {
|
|
if m != nil {
|
|
return m.Duration
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (m *AlertPolicy_Condition_MetricAbsence) GetTrigger() *AlertPolicy_Condition_Trigger {
|
|
if m != nil {
|
|
return m.Trigger
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func init() {
|
|
proto.RegisterType((*AlertPolicy)(nil), "google.monitoring.v3.AlertPolicy")
|
|
proto.RegisterMapType((map[string]string)(nil), "google.monitoring.v3.AlertPolicy.UserLabelsEntry")
|
|
proto.RegisterType((*AlertPolicy_Documentation)(nil), "google.monitoring.v3.AlertPolicy.Documentation")
|
|
proto.RegisterType((*AlertPolicy_Condition)(nil), "google.monitoring.v3.AlertPolicy.Condition")
|
|
proto.RegisterType((*AlertPolicy_Condition_Trigger)(nil), "google.monitoring.v3.AlertPolicy.Condition.Trigger")
|
|
proto.RegisterType((*AlertPolicy_Condition_MetricThreshold)(nil), "google.monitoring.v3.AlertPolicy.Condition.MetricThreshold")
|
|
proto.RegisterType((*AlertPolicy_Condition_MetricAbsence)(nil), "google.monitoring.v3.AlertPolicy.Condition.MetricAbsence")
|
|
proto.RegisterEnum("google.monitoring.v3.AlertPolicy_ConditionCombinerType", AlertPolicy_ConditionCombinerType_name, AlertPolicy_ConditionCombinerType_value)
|
|
}
|
|
|
|
func init() {
|
|
proto.RegisterFile("google/monitoring/v3/alert.proto", fileDescriptor_alert_17949719c044e638)
|
|
}
|
|
|
|
var fileDescriptor_alert_17949719c044e638 = []byte{
|
|
// 941 bytes of a gzipped FileDescriptorProto
|
|
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x56, 0xeb, 0x6e, 0xe3, 0x44,
|
|
0x14, 0xae, 0x93, 0xe6, 0x76, 0xd2, 0x36, 0xd9, 0xd9, 0xee, 0xae, 0x31, 0x68, 0x95, 0xae, 0x90,
|
|
0x88, 0x40, 0x38, 0x22, 0x01, 0x71, 0x59, 0x81, 0x94, 0x5b, 0x37, 0x11, 0x24, 0xad, 0xa6, 0x69,
|
|
0x91, 0x50, 0x25, 0xcb, 0x71, 0xa6, 0xae, 0x85, 0x3d, 0x63, 0x4d, 0xec, 0xa2, 0xbc, 0x0e, 0x3f,
|
|
0x79, 0x14, 0x1e, 0x81, 0x7f, 0xbc, 0x02, 0xe2, 0x01, 0x90, 0xc7, 0x63, 0xc7, 0xe9, 0xa6, 0xbb,
|
|
0x64, 0xf7, 0x5f, 0xce, 0x9c, 0xef, 0x7c, 0xe7, 0xf6, 0xcd, 0x38, 0xd0, 0xb0, 0x19, 0xb3, 0x5d,
|
|
0xd2, 0xf2, 0x18, 0x75, 0x02, 0xc6, 0x1d, 0x6a, 0xb7, 0xee, 0x3a, 0x2d, 0xd3, 0x25, 0x3c, 0xd0,
|
|
0x7d, 0xce, 0x02, 0x86, 0x8e, 0x63, 0x84, 0xbe, 0x46, 0xe8, 0x77, 0x1d, 0xed, 0x23, 0x19, 0x67,
|
|
0xfa, 0x4e, 0xcb, 0xa4, 0x94, 0x05, 0x66, 0xe0, 0x30, 0xba, 0x8c, 0x63, 0xb4, 0x93, 0xad, 0xac,
|
|
0x16, 0xf3, 0x3c, 0x46, 0x25, 0xe4, 0xd3, 0xad, 0x10, 0x2f, 0x8c, 0x89, 0x0c, 0x4e, 0x2c, 0xc6,
|
|
0x17, 0x12, 0xfb, 0x5c, 0x62, 0x85, 0x35, 0x0f, 0x6f, 0x5a, 0x8b, 0x90, 0x0b, 0xd8, 0x43, 0xfe,
|
|
0xdf, 0xb8, 0xe9, 0xfb, 0x84, 0xcb, 0x72, 0x5e, 0xfc, 0x5d, 0x83, 0x6a, 0x37, 0x6a, 0xe9, 0x9c,
|
|
0xb9, 0x8e, 0xb5, 0x42, 0x08, 0xf6, 0xa9, 0xe9, 0x11, 0x55, 0x69, 0x28, 0xcd, 0x0a, 0x16, 0xbf,
|
|
0xd1, 0x09, 0x1c, 0x2c, 0x9c, 0xa5, 0xef, 0x9a, 0x2b, 0x43, 0xf8, 0x72, 0xc2, 0x57, 0x95, 0x67,
|
|
0xd3, 0x08, 0x72, 0x09, 0x87, 0x0b, 0x66, 0x85, 0x1e, 0xa1, 0x71, 0x91, 0xea, 0x61, 0x43, 0x69,
|
|
0x56, 0xdb, 0x2d, 0x7d, 0xdb, 0x84, 0xf4, 0x4c, 0x42, 0x7d, 0x90, 0x0d, 0xc3, 0x9b, 0x2c, 0x08,
|
|
0x43, 0x35, 0x5c, 0x12, 0x6e, 0xb8, 0xe6, 0x9c, 0xb8, 0x4b, 0xb5, 0xde, 0xc8, 0x37, 0xab, 0xed,
|
|
0x2f, 0xde, 0x4e, 0x7a, 0xb9, 0x24, 0xfc, 0x27, 0x11, 0x33, 0xa4, 0x01, 0x5f, 0x61, 0x08, 0xd3,
|
|
0x03, 0xf4, 0x23, 0x80, 0xc5, 0xe8, 0xc2, 0x11, 0x4b, 0x51, 0x0f, 0x04, 0xe5, 0x67, 0x6f, 0xa7,
|
|
0xec, 0x27, 0x31, 0x38, 0x13, 0x8e, 0x2e, 0xa0, 0x6c, 0x31, 0x6f, 0xee, 0x50, 0xc2, 0xd5, 0x62,
|
|
0x43, 0x69, 0x1e, 0xb5, 0xbf, 0xde, 0x81, 0xaa, 0x2f, 0x43, 0x67, 0x2b, 0x9f, 0xe0, 0x94, 0x08,
|
|
0x7d, 0x09, 0x25, 0x42, 0xcd, 0xb9, 0x4b, 0x16, 0xea, 0x23, 0x31, 0x46, 0x2d, 0xe1, 0x4c, 0xb6,
|
|
0xa8, 0xf7, 0x18, 0x73, 0xaf, 0x4c, 0x37, 0x24, 0x38, 0x81, 0xa2, 0x0e, 0x3c, 0xa1, 0x2c, 0x70,
|
|
0x6e, 0x1c, 0x2b, 0x96, 0x89, 0x75, 0x6b, 0x52, 0x1a, 0x4d, 0xed, 0xa8, 0x91, 0x6f, 0x56, 0xf0,
|
|
0x71, 0xd6, 0xd9, 0x97, 0x3e, 0x34, 0x81, 0x9a, 0xc5, 0x49, 0x56, 0x57, 0x2a, 0x88, 0x94, 0x1f,
|
|
0x6f, 0x6f, 0x63, 0x22, 0x45, 0x88, 0x05, 0x16, 0x1f, 0x25, 0xc1, 0xb1, 0x1d, 0xd1, 0xdd, 0x93,
|
|
0xa9, 0x5a, 0xdd, 0x85, 0xce, 0xdb, 0xb0, 0xb5, 0x53, 0x38, 0xdc, 0x90, 0x07, 0x52, 0xa1, 0x64,
|
|
0x31, 0x1a, 0x10, 0x1a, 0x48, 0x81, 0x26, 0x26, 0xfa, 0x10, 0x2a, 0x9e, 0xe3, 0x11, 0x23, 0x58,
|
|
0xf9, 0x89, 0x40, 0xcb, 0xd1, 0x41, 0x34, 0x5a, 0xed, 0xaf, 0x32, 0x54, 0xd2, 0xa1, 0xa7, 0x12,
|
|
0x3f, 0x78, 0x83, 0xc4, 0x8b, 0xaf, 0x4b, 0x9c, 0xc2, 0xe3, 0x74, 0xf1, 0x46, 0x70, 0xcb, 0xc9,
|
|
0xf2, 0x96, 0xb9, 0x0b, 0x51, 0x47, 0xb5, 0xfd, 0x72, 0x87, 0xad, 0xeb, 0x13, 0x12, 0x70, 0xc7,
|
|
0x9a, 0x25, 0x14, 0xa3, 0x3d, 0x8c, 0x52, 0xe6, 0xf4, 0x14, 0xdd, 0x40, 0x7d, 0x9d, 0xcf, 0x9c,
|
|
0x2f, 0xa3, 0xa6, 0x73, 0x22, 0xd9, 0xb7, 0xbb, 0x27, 0xeb, 0x46, 0xf1, 0x16, 0x19, 0xed, 0xe1,
|
|
0x5a, 0x4a, 0x2a, 0xce, 0x02, 0x6d, 0x08, 0xa5, 0x19, 0x77, 0x6c, 0x9b, 0x70, 0xf4, 0x14, 0x0a,
|
|
0x16, 0x0b, 0xe5, 0x70, 0x0b, 0xa3, 0x3d, 0x1c, 0x9b, 0x48, 0x83, 0x92, 0x4f, 0xb8, 0x95, 0x54,
|
|
0xa0, 0x8c, 0xf6, 0x70, 0x72, 0xd0, 0x2b, 0xc2, 0x7e, 0x34, 0x73, 0xed, 0x9f, 0x3c, 0xd4, 0xee,
|
|
0x35, 0x86, 0x9e, 0x42, 0xf1, 0xc6, 0x71, 0x03, 0xc2, 0xe5, 0x46, 0xa4, 0x85, 0x86, 0x70, 0x60,
|
|
0xda, 0x36, 0x27, 0x76, 0xfc, 0x32, 0xaa, 0x65, 0x71, 0x09, 0x4f, 0x1e, 0x68, 0x6b, 0x8d, 0xc4,
|
|
0x1b, 0x61, 0xe8, 0x73, 0x40, 0x0b, 0x42, 0x99, 0xe7, 0x50, 0x33, 0x60, 0xdc, 0x90, 0xa9, 0x2a,
|
|
0x22, 0xd5, 0xa3, 0x8c, 0xe7, 0x34, 0xce, 0x7a, 0x0d, 0x6a, 0x16, 0xbe, 0x51, 0x01, 0xfc, 0xdf,
|
|
0x0a, 0x9e, 0x65, 0x28, 0xba, 0xd9, 0x62, 0x06, 0xd1, 0xb3, 0xe2, 0xf9, 0x26, 0x77, 0x96, 0x8c,
|
|
0xaa, 0xfb, 0xe2, 0x2d, 0x78, 0x40, 0xf5, 0xfd, 0x14, 0x27, 0x2e, 0x7e, 0x26, 0x0e, 0x7d, 0x02,
|
|
0xb5, 0x54, 0x5a, 0xc6, 0x5d, 0x74, 0xc1, 0xd5, 0x42, 0x34, 0x71, 0x7c, 0x94, 0x1e, 0x8b, 0x6b,
|
|
0x8f, 0xbe, 0x82, 0x72, 0xf2, 0xd2, 0x0b, 0xb1, 0x56, 0xdb, 0x1f, 0xbc, 0xf6, 0x48, 0x0c, 0x24,
|
|
0x00, 0xa7, 0x50, 0x34, 0x81, 0x52, 0x10, 0x2f, 0x5b, 0x2d, 0x89, 0xa8, 0xce, 0x2e, 0x5a, 0x92,
|
|
0x3a, 0xc1, 0x09, 0x87, 0xf6, 0xaf, 0x02, 0x87, 0x1b, 0x02, 0xcb, 0xac, 0x5c, 0x79, 0xe3, 0xca,
|
|
0x0b, 0xef, 0xb6, 0xf2, 0x6c, 0xdb, 0xb9, 0x77, 0x6a, 0x3b, 0xff, 0xfe, 0x6d, 0xf7, 0xaa, 0x50,
|
|
0x49, 0x6f, 0x91, 0xf6, 0x3d, 0xd4, 0xee, 0x7d, 0x6e, 0x50, 0x1d, 0xf2, 0xbf, 0x92, 0x95, 0x9c,
|
|
0x40, 0xf4, 0x13, 0x1d, 0x43, 0x21, 0xde, 0x66, 0x7c, 0x11, 0x62, 0xe3, 0xbb, 0xdc, 0x37, 0xca,
|
|
0x0b, 0x13, 0x9e, 0x6c, 0xfd, 0x1e, 0xa0, 0x67, 0xf0, 0xb8, 0x7f, 0x36, 0xe9, 0x8d, 0xa7, 0x43,
|
|
0xe3, 0x72, 0x7a, 0x71, 0x3e, 0xec, 0x8f, 0x4f, 0xc7, 0xc3, 0x41, 0x7d, 0x0f, 0x95, 0x20, 0xdf,
|
|
0x9d, 0x0e, 0xea, 0x0a, 0x2a, 0x42, 0xee, 0x0c, 0xd7, 0x73, 0xe8, 0x39, 0x68, 0xdd, 0xe9, 0xc0,
|
|
0xf8, 0x79, 0x3c, 0x1b, 0x19, 0x93, 0xee, 0xac, 0x3f, 0x1a, 0x4f, 0x5f, 0x19, 0x78, 0x78, 0x71,
|
|
0x76, 0x89, 0xfb, 0xc3, 0x7a, 0xbe, 0xf7, 0xbb, 0x02, 0xaa, 0xc5, 0xbc, 0xad, 0x2d, 0xf7, 0x20,
|
|
0xee, 0x39, 0x1a, 0xde, 0xb9, 0xf2, 0xcb, 0x0f, 0x12, 0x63, 0x33, 0xd7, 0xa4, 0xb6, 0xce, 0xb8,
|
|
0xdd, 0xb2, 0x09, 0x15, 0xa3, 0x6d, 0xc5, 0x2e, 0xd3, 0x77, 0x96, 0x9b, 0xff, 0x4c, 0x5e, 0xae,
|
|
0xad, 0x3f, 0x72, 0xda, 0xab, 0x98, 0xa0, 0xef, 0xb2, 0x70, 0xa1, 0x4f, 0xd6, 0xa9, 0xae, 0x3a,
|
|
0x7f, 0x26, 0xce, 0x6b, 0xe1, 0xbc, 0x5e, 0x3b, 0xaf, 0xaf, 0x3a, 0xf3, 0xa2, 0x48, 0xd2, 0xf9,
|
|
0x2f, 0x00, 0x00, 0xff, 0xff, 0x66, 0xb5, 0x16, 0x64, 0x76, 0x09, 0x00, 0x00,
|
|
}
|