github.com/imannamdari/v2ray-core/v5@v5.0.5/app/router/config.pb.go (about)

     1  package router
     2  
     3  import (
     4  	reflect "reflect"
     5  	sync "sync"
     6  
     7  	routercommon "github.com/imannamdari/v2ray-core/v5/app/router/routercommon"
     8  	net "github.com/imannamdari/v2ray-core/v5/common/net"
     9  	_ "github.com/imannamdari/v2ray-core/v5/common/protoext"
    10  	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
    11  	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
    12  	anypb "google.golang.org/protobuf/types/known/anypb"
    13  )
    14  
    15  const (
    16  	// Verify that this generated code is sufficiently up-to-date.
    17  	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
    18  	// Verify that runtime/protoimpl is sufficiently up-to-date.
    19  	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
    20  )
    21  
    22  type DomainStrategy int32
    23  
    24  const (
    25  	// Use domain as is.
    26  	DomainStrategy_AsIs DomainStrategy = 0
    27  	// Always resolve IP for domains.
    28  	DomainStrategy_UseIp DomainStrategy = 1
    29  	// Resolve to IP if the domain doesn't match any rules.
    30  	DomainStrategy_IpIfNonMatch DomainStrategy = 2
    31  	// Resolve to IP if any rule requires IP matching.
    32  	DomainStrategy_IpOnDemand DomainStrategy = 3
    33  )
    34  
    35  // Enum value maps for DomainStrategy.
    36  var (
    37  	DomainStrategy_name = map[int32]string{
    38  		0: "AsIs",
    39  		1: "UseIp",
    40  		2: "IpIfNonMatch",
    41  		3: "IpOnDemand",
    42  	}
    43  	DomainStrategy_value = map[string]int32{
    44  		"AsIs":         0,
    45  		"UseIp":        1,
    46  		"IpIfNonMatch": 2,
    47  		"IpOnDemand":   3,
    48  	}
    49  )
    50  
    51  func (x DomainStrategy) Enum() *DomainStrategy {
    52  	p := new(DomainStrategy)
    53  	*p = x
    54  	return p
    55  }
    56  
    57  func (x DomainStrategy) String() string {
    58  	return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
    59  }
    60  
    61  func (DomainStrategy) Descriptor() protoreflect.EnumDescriptor {
    62  	return file_app_router_config_proto_enumTypes[0].Descriptor()
    63  }
    64  
    65  func (DomainStrategy) Type() protoreflect.EnumType {
    66  	return &file_app_router_config_proto_enumTypes[0]
    67  }
    68  
    69  func (x DomainStrategy) Number() protoreflect.EnumNumber {
    70  	return protoreflect.EnumNumber(x)
    71  }
    72  
    73  // Deprecated: Use DomainStrategy.Descriptor instead.
    74  func (DomainStrategy) EnumDescriptor() ([]byte, []int) {
    75  	return file_app_router_config_proto_rawDescGZIP(), []int{0}
    76  }
    77  
    78  type RoutingRule struct {
    79  	state         protoimpl.MessageState
    80  	sizeCache     protoimpl.SizeCache
    81  	unknownFields protoimpl.UnknownFields
    82  
    83  	// Types that are assignable to TargetTag:
    84  	//
    85  	//	*RoutingRule_Tag
    86  	//	*RoutingRule_BalancingTag
    87  	TargetTag isRoutingRule_TargetTag `protobuf_oneof:"target_tag"`
    88  	// List of domains for target domain matching.
    89  	Domain []*routercommon.Domain `protobuf:"bytes,2,rep,name=domain,proto3" json:"domain,omitempty"`
    90  	// List of CIDRs for target IP address matching.
    91  	// Deprecated. Use geoip below.
    92  	//
    93  	// Deprecated: Do not use.
    94  	Cidr []*routercommon.CIDR `protobuf:"bytes,3,rep,name=cidr,proto3" json:"cidr,omitempty"`
    95  	// List of GeoIPs for target IP address matching. If this entry exists, the
    96  	// cidr above will have no effect. GeoIP fields with the same country code are
    97  	// supposed to contain exactly same content. They will be merged during
    98  	// runtime. For customized GeoIPs, please leave country code empty.
    99  	Geoip []*routercommon.GeoIP `protobuf:"bytes,10,rep,name=geoip,proto3" json:"geoip,omitempty"`
   100  	// A range of port [from, to]. If the destination port is in this range, this
   101  	// rule takes effect. Deprecated. Use port_list.
   102  	//
   103  	// Deprecated: Do not use.
   104  	PortRange *net.PortRange `protobuf:"bytes,4,opt,name=port_range,json=portRange,proto3" json:"port_range,omitempty"`
   105  	// List of ports.
   106  	PortList *net.PortList `protobuf:"bytes,14,opt,name=port_list,json=portList,proto3" json:"port_list,omitempty"`
   107  	// List of networks. Deprecated. Use networks.
   108  	//
   109  	// Deprecated: Do not use.
   110  	NetworkList *net.NetworkList `protobuf:"bytes,5,opt,name=network_list,json=networkList,proto3" json:"network_list,omitempty"`
   111  	// List of networks for matching.
   112  	Networks []net.Network `protobuf:"varint,13,rep,packed,name=networks,proto3,enum=v2ray.core.common.net.Network" json:"networks,omitempty"`
   113  	// List of CIDRs for source IP address matching.
   114  	//
   115  	// Deprecated: Do not use.
   116  	SourceCidr []*routercommon.CIDR `protobuf:"bytes,6,rep,name=source_cidr,json=sourceCidr,proto3" json:"source_cidr,omitempty"`
   117  	// List of GeoIPs for source IP address matching. If this entry exists, the
   118  	// source_cidr above will have no effect.
   119  	SourceGeoip []*routercommon.GeoIP `protobuf:"bytes,11,rep,name=source_geoip,json=sourceGeoip,proto3" json:"source_geoip,omitempty"`
   120  	// List of ports for source port matching.
   121  	SourcePortList *net.PortList `protobuf:"bytes,16,opt,name=source_port_list,json=sourcePortList,proto3" json:"source_port_list,omitempty"`
   122  	UserEmail      []string      `protobuf:"bytes,7,rep,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"`
   123  	InboundTag     []string      `protobuf:"bytes,8,rep,name=inbound_tag,json=inboundTag,proto3" json:"inbound_tag,omitempty"`
   124  	Protocol       []string      `protobuf:"bytes,9,rep,name=protocol,proto3" json:"protocol,omitempty"`
   125  	Attributes     string        `protobuf:"bytes,15,opt,name=attributes,proto3" json:"attributes,omitempty"`
   126  	DomainMatcher  string        `protobuf:"bytes,17,opt,name=domain_matcher,json=domainMatcher,proto3" json:"domain_matcher,omitempty"`
   127  	// geo_domain instruct simplified config loader to load geo domain rule and fill in domain field.
   128  	GeoDomain []*routercommon.GeoSite `protobuf:"bytes,68001,rep,name=geo_domain,json=geoDomain,proto3" json:"geo_domain,omitempty"`
   129  }
   130  
   131  func (x *RoutingRule) Reset() {
   132  	*x = RoutingRule{}
   133  	if protoimpl.UnsafeEnabled {
   134  		mi := &file_app_router_config_proto_msgTypes[0]
   135  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   136  		ms.StoreMessageInfo(mi)
   137  	}
   138  }
   139  
   140  func (x *RoutingRule) String() string {
   141  	return protoimpl.X.MessageStringOf(x)
   142  }
   143  
   144  func (*RoutingRule) ProtoMessage() {}
   145  
   146  func (x *RoutingRule) ProtoReflect() protoreflect.Message {
   147  	mi := &file_app_router_config_proto_msgTypes[0]
   148  	if protoimpl.UnsafeEnabled && x != nil {
   149  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   150  		if ms.LoadMessageInfo() == nil {
   151  			ms.StoreMessageInfo(mi)
   152  		}
   153  		return ms
   154  	}
   155  	return mi.MessageOf(x)
   156  }
   157  
   158  // Deprecated: Use RoutingRule.ProtoReflect.Descriptor instead.
   159  func (*RoutingRule) Descriptor() ([]byte, []int) {
   160  	return file_app_router_config_proto_rawDescGZIP(), []int{0}
   161  }
   162  
   163  func (m *RoutingRule) GetTargetTag() isRoutingRule_TargetTag {
   164  	if m != nil {
   165  		return m.TargetTag
   166  	}
   167  	return nil
   168  }
   169  
   170  func (x *RoutingRule) GetTag() string {
   171  	if x, ok := x.GetTargetTag().(*RoutingRule_Tag); ok {
   172  		return x.Tag
   173  	}
   174  	return ""
   175  }
   176  
   177  func (x *RoutingRule) GetBalancingTag() string {
   178  	if x, ok := x.GetTargetTag().(*RoutingRule_BalancingTag); ok {
   179  		return x.BalancingTag
   180  	}
   181  	return ""
   182  }
   183  
   184  func (x *RoutingRule) GetDomain() []*routercommon.Domain {
   185  	if x != nil {
   186  		return x.Domain
   187  	}
   188  	return nil
   189  }
   190  
   191  // Deprecated: Do not use.
   192  func (x *RoutingRule) GetCidr() []*routercommon.CIDR {
   193  	if x != nil {
   194  		return x.Cidr
   195  	}
   196  	return nil
   197  }
   198  
   199  func (x *RoutingRule) GetGeoip() []*routercommon.GeoIP {
   200  	if x != nil {
   201  		return x.Geoip
   202  	}
   203  	return nil
   204  }
   205  
   206  // Deprecated: Do not use.
   207  func (x *RoutingRule) GetPortRange() *net.PortRange {
   208  	if x != nil {
   209  		return x.PortRange
   210  	}
   211  	return nil
   212  }
   213  
   214  func (x *RoutingRule) GetPortList() *net.PortList {
   215  	if x != nil {
   216  		return x.PortList
   217  	}
   218  	return nil
   219  }
   220  
   221  // Deprecated: Do not use.
   222  func (x *RoutingRule) GetNetworkList() *net.NetworkList {
   223  	if x != nil {
   224  		return x.NetworkList
   225  	}
   226  	return nil
   227  }
   228  
   229  func (x *RoutingRule) GetNetworks() []net.Network {
   230  	if x != nil {
   231  		return x.Networks
   232  	}
   233  	return nil
   234  }
   235  
   236  // Deprecated: Do not use.
   237  func (x *RoutingRule) GetSourceCidr() []*routercommon.CIDR {
   238  	if x != nil {
   239  		return x.SourceCidr
   240  	}
   241  	return nil
   242  }
   243  
   244  func (x *RoutingRule) GetSourceGeoip() []*routercommon.GeoIP {
   245  	if x != nil {
   246  		return x.SourceGeoip
   247  	}
   248  	return nil
   249  }
   250  
   251  func (x *RoutingRule) GetSourcePortList() *net.PortList {
   252  	if x != nil {
   253  		return x.SourcePortList
   254  	}
   255  	return nil
   256  }
   257  
   258  func (x *RoutingRule) GetUserEmail() []string {
   259  	if x != nil {
   260  		return x.UserEmail
   261  	}
   262  	return nil
   263  }
   264  
   265  func (x *RoutingRule) GetInboundTag() []string {
   266  	if x != nil {
   267  		return x.InboundTag
   268  	}
   269  	return nil
   270  }
   271  
   272  func (x *RoutingRule) GetProtocol() []string {
   273  	if x != nil {
   274  		return x.Protocol
   275  	}
   276  	return nil
   277  }
   278  
   279  func (x *RoutingRule) GetAttributes() string {
   280  	if x != nil {
   281  		return x.Attributes
   282  	}
   283  	return ""
   284  }
   285  
   286  func (x *RoutingRule) GetDomainMatcher() string {
   287  	if x != nil {
   288  		return x.DomainMatcher
   289  	}
   290  	return ""
   291  }
   292  
   293  func (x *RoutingRule) GetGeoDomain() []*routercommon.GeoSite {
   294  	if x != nil {
   295  		return x.GeoDomain
   296  	}
   297  	return nil
   298  }
   299  
   300  type isRoutingRule_TargetTag interface {
   301  	isRoutingRule_TargetTag()
   302  }
   303  
   304  type RoutingRule_Tag struct {
   305  	// Tag of outbound that this rule is pointing to.
   306  	Tag string `protobuf:"bytes,1,opt,name=tag,proto3,oneof"`
   307  }
   308  
   309  type RoutingRule_BalancingTag struct {
   310  	// Tag of routing balancer.
   311  	BalancingTag string `protobuf:"bytes,12,opt,name=balancing_tag,json=balancingTag,proto3,oneof"`
   312  }
   313  
   314  func (*RoutingRule_Tag) isRoutingRule_TargetTag() {}
   315  
   316  func (*RoutingRule_BalancingTag) isRoutingRule_TargetTag() {}
   317  
   318  type BalancingRule struct {
   319  	state         protoimpl.MessageState
   320  	sizeCache     protoimpl.SizeCache
   321  	unknownFields protoimpl.UnknownFields
   322  
   323  	Tag              string     `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"`
   324  	OutboundSelector []string   `protobuf:"bytes,2,rep,name=outbound_selector,json=outboundSelector,proto3" json:"outbound_selector,omitempty"`
   325  	Strategy         string     `protobuf:"bytes,3,opt,name=strategy,proto3" json:"strategy,omitempty"`
   326  	StrategySettings *anypb.Any `protobuf:"bytes,4,opt,name=strategy_settings,json=strategySettings,proto3" json:"strategy_settings,omitempty"`
   327  	FallbackTag      string     `protobuf:"bytes,5,opt,name=fallback_tag,json=fallbackTag,proto3" json:"fallback_tag,omitempty"`
   328  }
   329  
   330  func (x *BalancingRule) Reset() {
   331  	*x = BalancingRule{}
   332  	if protoimpl.UnsafeEnabled {
   333  		mi := &file_app_router_config_proto_msgTypes[1]
   334  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   335  		ms.StoreMessageInfo(mi)
   336  	}
   337  }
   338  
   339  func (x *BalancingRule) String() string {
   340  	return protoimpl.X.MessageStringOf(x)
   341  }
   342  
   343  func (*BalancingRule) ProtoMessage() {}
   344  
   345  func (x *BalancingRule) ProtoReflect() protoreflect.Message {
   346  	mi := &file_app_router_config_proto_msgTypes[1]
   347  	if protoimpl.UnsafeEnabled && x != nil {
   348  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   349  		if ms.LoadMessageInfo() == nil {
   350  			ms.StoreMessageInfo(mi)
   351  		}
   352  		return ms
   353  	}
   354  	return mi.MessageOf(x)
   355  }
   356  
   357  // Deprecated: Use BalancingRule.ProtoReflect.Descriptor instead.
   358  func (*BalancingRule) Descriptor() ([]byte, []int) {
   359  	return file_app_router_config_proto_rawDescGZIP(), []int{1}
   360  }
   361  
   362  func (x *BalancingRule) GetTag() string {
   363  	if x != nil {
   364  		return x.Tag
   365  	}
   366  	return ""
   367  }
   368  
   369  func (x *BalancingRule) GetOutboundSelector() []string {
   370  	if x != nil {
   371  		return x.OutboundSelector
   372  	}
   373  	return nil
   374  }
   375  
   376  func (x *BalancingRule) GetStrategy() string {
   377  	if x != nil {
   378  		return x.Strategy
   379  	}
   380  	return ""
   381  }
   382  
   383  func (x *BalancingRule) GetStrategySettings() *anypb.Any {
   384  	if x != nil {
   385  		return x.StrategySettings
   386  	}
   387  	return nil
   388  }
   389  
   390  func (x *BalancingRule) GetFallbackTag() string {
   391  	if x != nil {
   392  		return x.FallbackTag
   393  	}
   394  	return ""
   395  }
   396  
   397  type StrategyWeight struct {
   398  	state         protoimpl.MessageState
   399  	sizeCache     protoimpl.SizeCache
   400  	unknownFields protoimpl.UnknownFields
   401  
   402  	Regexp bool    `protobuf:"varint,1,opt,name=regexp,proto3" json:"regexp,omitempty"`
   403  	Match  string  `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"`
   404  	Value  float32 `protobuf:"fixed32,3,opt,name=value,proto3" json:"value,omitempty"`
   405  }
   406  
   407  func (x *StrategyWeight) Reset() {
   408  	*x = StrategyWeight{}
   409  	if protoimpl.UnsafeEnabled {
   410  		mi := &file_app_router_config_proto_msgTypes[2]
   411  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   412  		ms.StoreMessageInfo(mi)
   413  	}
   414  }
   415  
   416  func (x *StrategyWeight) String() string {
   417  	return protoimpl.X.MessageStringOf(x)
   418  }
   419  
   420  func (*StrategyWeight) ProtoMessage() {}
   421  
   422  func (x *StrategyWeight) ProtoReflect() protoreflect.Message {
   423  	mi := &file_app_router_config_proto_msgTypes[2]
   424  	if protoimpl.UnsafeEnabled && x != nil {
   425  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   426  		if ms.LoadMessageInfo() == nil {
   427  			ms.StoreMessageInfo(mi)
   428  		}
   429  		return ms
   430  	}
   431  	return mi.MessageOf(x)
   432  }
   433  
   434  // Deprecated: Use StrategyWeight.ProtoReflect.Descriptor instead.
   435  func (*StrategyWeight) Descriptor() ([]byte, []int) {
   436  	return file_app_router_config_proto_rawDescGZIP(), []int{2}
   437  }
   438  
   439  func (x *StrategyWeight) GetRegexp() bool {
   440  	if x != nil {
   441  		return x.Regexp
   442  	}
   443  	return false
   444  }
   445  
   446  func (x *StrategyWeight) GetMatch() string {
   447  	if x != nil {
   448  		return x.Match
   449  	}
   450  	return ""
   451  }
   452  
   453  func (x *StrategyWeight) GetValue() float32 {
   454  	if x != nil {
   455  		return x.Value
   456  	}
   457  	return 0
   458  }
   459  
   460  type StrategyRandomConfig struct {
   461  	state         protoimpl.MessageState
   462  	sizeCache     protoimpl.SizeCache
   463  	unknownFields protoimpl.UnknownFields
   464  }
   465  
   466  func (x *StrategyRandomConfig) Reset() {
   467  	*x = StrategyRandomConfig{}
   468  	if protoimpl.UnsafeEnabled {
   469  		mi := &file_app_router_config_proto_msgTypes[3]
   470  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   471  		ms.StoreMessageInfo(mi)
   472  	}
   473  }
   474  
   475  func (x *StrategyRandomConfig) String() string {
   476  	return protoimpl.X.MessageStringOf(x)
   477  }
   478  
   479  func (*StrategyRandomConfig) ProtoMessage() {}
   480  
   481  func (x *StrategyRandomConfig) ProtoReflect() protoreflect.Message {
   482  	mi := &file_app_router_config_proto_msgTypes[3]
   483  	if protoimpl.UnsafeEnabled && x != nil {
   484  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   485  		if ms.LoadMessageInfo() == nil {
   486  			ms.StoreMessageInfo(mi)
   487  		}
   488  		return ms
   489  	}
   490  	return mi.MessageOf(x)
   491  }
   492  
   493  // Deprecated: Use StrategyRandomConfig.ProtoReflect.Descriptor instead.
   494  func (*StrategyRandomConfig) Descriptor() ([]byte, []int) {
   495  	return file_app_router_config_proto_rawDescGZIP(), []int{3}
   496  }
   497  
   498  type StrategyLeastPingConfig struct {
   499  	state         protoimpl.MessageState
   500  	sizeCache     protoimpl.SizeCache
   501  	unknownFields protoimpl.UnknownFields
   502  
   503  	ObserverTag string `protobuf:"bytes,7,opt,name=observer_tag,json=observerTag,proto3" json:"observer_tag,omitempty"`
   504  }
   505  
   506  func (x *StrategyLeastPingConfig) Reset() {
   507  	*x = StrategyLeastPingConfig{}
   508  	if protoimpl.UnsafeEnabled {
   509  		mi := &file_app_router_config_proto_msgTypes[4]
   510  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   511  		ms.StoreMessageInfo(mi)
   512  	}
   513  }
   514  
   515  func (x *StrategyLeastPingConfig) String() string {
   516  	return protoimpl.X.MessageStringOf(x)
   517  }
   518  
   519  func (*StrategyLeastPingConfig) ProtoMessage() {}
   520  
   521  func (x *StrategyLeastPingConfig) ProtoReflect() protoreflect.Message {
   522  	mi := &file_app_router_config_proto_msgTypes[4]
   523  	if protoimpl.UnsafeEnabled && x != nil {
   524  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   525  		if ms.LoadMessageInfo() == nil {
   526  			ms.StoreMessageInfo(mi)
   527  		}
   528  		return ms
   529  	}
   530  	return mi.MessageOf(x)
   531  }
   532  
   533  // Deprecated: Use StrategyLeastPingConfig.ProtoReflect.Descriptor instead.
   534  func (*StrategyLeastPingConfig) Descriptor() ([]byte, []int) {
   535  	return file_app_router_config_proto_rawDescGZIP(), []int{4}
   536  }
   537  
   538  func (x *StrategyLeastPingConfig) GetObserverTag() string {
   539  	if x != nil {
   540  		return x.ObserverTag
   541  	}
   542  	return ""
   543  }
   544  
   545  type StrategyLeastLoadConfig struct {
   546  	state         protoimpl.MessageState
   547  	sizeCache     protoimpl.SizeCache
   548  	unknownFields protoimpl.UnknownFields
   549  
   550  	// weight settings
   551  	Costs []*StrategyWeight `protobuf:"bytes,2,rep,name=costs,proto3" json:"costs,omitempty"`
   552  	// RTT baselines for selecting, int64 values of time.Duration
   553  	Baselines []int64 `protobuf:"varint,3,rep,packed,name=baselines,proto3" json:"baselines,omitempty"`
   554  	// expected nodes count to select
   555  	Expected int32 `protobuf:"varint,4,opt,name=expected,proto3" json:"expected,omitempty"`
   556  	// max acceptable rtt, filter away high delay nodes. defalut 0
   557  	MaxRTT int64 `protobuf:"varint,5,opt,name=maxRTT,proto3" json:"maxRTT,omitempty"`
   558  	// acceptable failure rate
   559  	Tolerance   float32 `protobuf:"fixed32,6,opt,name=tolerance,proto3" json:"tolerance,omitempty"`
   560  	ObserverTag string  `protobuf:"bytes,7,opt,name=observer_tag,json=observerTag,proto3" json:"observer_tag,omitempty"`
   561  }
   562  
   563  func (x *StrategyLeastLoadConfig) Reset() {
   564  	*x = StrategyLeastLoadConfig{}
   565  	if protoimpl.UnsafeEnabled {
   566  		mi := &file_app_router_config_proto_msgTypes[5]
   567  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   568  		ms.StoreMessageInfo(mi)
   569  	}
   570  }
   571  
   572  func (x *StrategyLeastLoadConfig) String() string {
   573  	return protoimpl.X.MessageStringOf(x)
   574  }
   575  
   576  func (*StrategyLeastLoadConfig) ProtoMessage() {}
   577  
   578  func (x *StrategyLeastLoadConfig) ProtoReflect() protoreflect.Message {
   579  	mi := &file_app_router_config_proto_msgTypes[5]
   580  	if protoimpl.UnsafeEnabled && x != nil {
   581  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   582  		if ms.LoadMessageInfo() == nil {
   583  			ms.StoreMessageInfo(mi)
   584  		}
   585  		return ms
   586  	}
   587  	return mi.MessageOf(x)
   588  }
   589  
   590  // Deprecated: Use StrategyLeastLoadConfig.ProtoReflect.Descriptor instead.
   591  func (*StrategyLeastLoadConfig) Descriptor() ([]byte, []int) {
   592  	return file_app_router_config_proto_rawDescGZIP(), []int{5}
   593  }
   594  
   595  func (x *StrategyLeastLoadConfig) GetCosts() []*StrategyWeight {
   596  	if x != nil {
   597  		return x.Costs
   598  	}
   599  	return nil
   600  }
   601  
   602  func (x *StrategyLeastLoadConfig) GetBaselines() []int64 {
   603  	if x != nil {
   604  		return x.Baselines
   605  	}
   606  	return nil
   607  }
   608  
   609  func (x *StrategyLeastLoadConfig) GetExpected() int32 {
   610  	if x != nil {
   611  		return x.Expected
   612  	}
   613  	return 0
   614  }
   615  
   616  func (x *StrategyLeastLoadConfig) GetMaxRTT() int64 {
   617  	if x != nil {
   618  		return x.MaxRTT
   619  	}
   620  	return 0
   621  }
   622  
   623  func (x *StrategyLeastLoadConfig) GetTolerance() float32 {
   624  	if x != nil {
   625  		return x.Tolerance
   626  	}
   627  	return 0
   628  }
   629  
   630  func (x *StrategyLeastLoadConfig) GetObserverTag() string {
   631  	if x != nil {
   632  		return x.ObserverTag
   633  	}
   634  	return ""
   635  }
   636  
   637  type Config struct {
   638  	state         protoimpl.MessageState
   639  	sizeCache     protoimpl.SizeCache
   640  	unknownFields protoimpl.UnknownFields
   641  
   642  	DomainStrategy DomainStrategy   `protobuf:"varint,1,opt,name=domain_strategy,json=domainStrategy,proto3,enum=v2ray.core.app.router.DomainStrategy" json:"domain_strategy,omitempty"`
   643  	Rule           []*RoutingRule   `protobuf:"bytes,2,rep,name=rule,proto3" json:"rule,omitempty"`
   644  	BalancingRule  []*BalancingRule `protobuf:"bytes,3,rep,name=balancing_rule,json=balancingRule,proto3" json:"balancing_rule,omitempty"`
   645  }
   646  
   647  func (x *Config) Reset() {
   648  	*x = Config{}
   649  	if protoimpl.UnsafeEnabled {
   650  		mi := &file_app_router_config_proto_msgTypes[6]
   651  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   652  		ms.StoreMessageInfo(mi)
   653  	}
   654  }
   655  
   656  func (x *Config) String() string {
   657  	return protoimpl.X.MessageStringOf(x)
   658  }
   659  
   660  func (*Config) ProtoMessage() {}
   661  
   662  func (x *Config) ProtoReflect() protoreflect.Message {
   663  	mi := &file_app_router_config_proto_msgTypes[6]
   664  	if protoimpl.UnsafeEnabled && x != nil {
   665  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   666  		if ms.LoadMessageInfo() == nil {
   667  			ms.StoreMessageInfo(mi)
   668  		}
   669  		return ms
   670  	}
   671  	return mi.MessageOf(x)
   672  }
   673  
   674  // Deprecated: Use Config.ProtoReflect.Descriptor instead.
   675  func (*Config) Descriptor() ([]byte, []int) {
   676  	return file_app_router_config_proto_rawDescGZIP(), []int{6}
   677  }
   678  
   679  func (x *Config) GetDomainStrategy() DomainStrategy {
   680  	if x != nil {
   681  		return x.DomainStrategy
   682  	}
   683  	return DomainStrategy_AsIs
   684  }
   685  
   686  func (x *Config) GetRule() []*RoutingRule {
   687  	if x != nil {
   688  		return x.Rule
   689  	}
   690  	return nil
   691  }
   692  
   693  func (x *Config) GetBalancingRule() []*BalancingRule {
   694  	if x != nil {
   695  		return x.BalancingRule
   696  	}
   697  	return nil
   698  }
   699  
   700  type SimplifiedRoutingRule struct {
   701  	state         protoimpl.MessageState
   702  	sizeCache     protoimpl.SizeCache
   703  	unknownFields protoimpl.UnknownFields
   704  
   705  	// Types that are assignable to TargetTag:
   706  	//
   707  	//	*SimplifiedRoutingRule_Tag
   708  	//	*SimplifiedRoutingRule_BalancingTag
   709  	TargetTag isSimplifiedRoutingRule_TargetTag `protobuf_oneof:"target_tag"`
   710  	// List of domains for target domain matching.
   711  	Domain []*routercommon.Domain `protobuf:"bytes,2,rep,name=domain,proto3" json:"domain,omitempty"`
   712  	// List of GeoIPs for target IP address matching. If this entry exists, the
   713  	// cidr above will have no effect. GeoIP fields with the same country code are
   714  	// supposed to contain exactly same content. They will be merged during
   715  	// runtime. For customized GeoIPs, please leave country code empty.
   716  	Geoip []*routercommon.GeoIP `protobuf:"bytes,10,rep,name=geoip,proto3" json:"geoip,omitempty"`
   717  	// List of ports.
   718  	PortList string `protobuf:"bytes,14,opt,name=port_list,json=portList,proto3" json:"port_list,omitempty"`
   719  	// List of networks for matching.
   720  	Networks *net.NetworkList `protobuf:"bytes,13,opt,name=networks,proto3" json:"networks,omitempty"`
   721  	// List of GeoIPs for source IP address matching. If this entry exists, the
   722  	// source_cidr above will have no effect.
   723  	SourceGeoip []*routercommon.GeoIP `protobuf:"bytes,11,rep,name=source_geoip,json=sourceGeoip,proto3" json:"source_geoip,omitempty"`
   724  	// List of ports for source port matching.
   725  	SourcePortList string   `protobuf:"bytes,16,opt,name=source_port_list,json=sourcePortList,proto3" json:"source_port_list,omitempty"`
   726  	UserEmail      []string `protobuf:"bytes,7,rep,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"`
   727  	InboundTag     []string `protobuf:"bytes,8,rep,name=inbound_tag,json=inboundTag,proto3" json:"inbound_tag,omitempty"`
   728  	Protocol       []string `protobuf:"bytes,9,rep,name=protocol,proto3" json:"protocol,omitempty"`
   729  	Attributes     string   `protobuf:"bytes,15,opt,name=attributes,proto3" json:"attributes,omitempty"`
   730  	DomainMatcher  string   `protobuf:"bytes,17,opt,name=domain_matcher,json=domainMatcher,proto3" json:"domain_matcher,omitempty"`
   731  	// geo_domain instruct simplified config loader to load geo domain rule and fill in domain field.
   732  	GeoDomain []*routercommon.GeoSite `protobuf:"bytes,68001,rep,name=geo_domain,json=geoDomain,proto3" json:"geo_domain,omitempty"`
   733  }
   734  
   735  func (x *SimplifiedRoutingRule) Reset() {
   736  	*x = SimplifiedRoutingRule{}
   737  	if protoimpl.UnsafeEnabled {
   738  		mi := &file_app_router_config_proto_msgTypes[7]
   739  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   740  		ms.StoreMessageInfo(mi)
   741  	}
   742  }
   743  
   744  func (x *SimplifiedRoutingRule) String() string {
   745  	return protoimpl.X.MessageStringOf(x)
   746  }
   747  
   748  func (*SimplifiedRoutingRule) ProtoMessage() {}
   749  
   750  func (x *SimplifiedRoutingRule) ProtoReflect() protoreflect.Message {
   751  	mi := &file_app_router_config_proto_msgTypes[7]
   752  	if protoimpl.UnsafeEnabled && x != nil {
   753  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   754  		if ms.LoadMessageInfo() == nil {
   755  			ms.StoreMessageInfo(mi)
   756  		}
   757  		return ms
   758  	}
   759  	return mi.MessageOf(x)
   760  }
   761  
   762  // Deprecated: Use SimplifiedRoutingRule.ProtoReflect.Descriptor instead.
   763  func (*SimplifiedRoutingRule) Descriptor() ([]byte, []int) {
   764  	return file_app_router_config_proto_rawDescGZIP(), []int{7}
   765  }
   766  
   767  func (m *SimplifiedRoutingRule) GetTargetTag() isSimplifiedRoutingRule_TargetTag {
   768  	if m != nil {
   769  		return m.TargetTag
   770  	}
   771  	return nil
   772  }
   773  
   774  func (x *SimplifiedRoutingRule) GetTag() string {
   775  	if x, ok := x.GetTargetTag().(*SimplifiedRoutingRule_Tag); ok {
   776  		return x.Tag
   777  	}
   778  	return ""
   779  }
   780  
   781  func (x *SimplifiedRoutingRule) GetBalancingTag() string {
   782  	if x, ok := x.GetTargetTag().(*SimplifiedRoutingRule_BalancingTag); ok {
   783  		return x.BalancingTag
   784  	}
   785  	return ""
   786  }
   787  
   788  func (x *SimplifiedRoutingRule) GetDomain() []*routercommon.Domain {
   789  	if x != nil {
   790  		return x.Domain
   791  	}
   792  	return nil
   793  }
   794  
   795  func (x *SimplifiedRoutingRule) GetGeoip() []*routercommon.GeoIP {
   796  	if x != nil {
   797  		return x.Geoip
   798  	}
   799  	return nil
   800  }
   801  
   802  func (x *SimplifiedRoutingRule) GetPortList() string {
   803  	if x != nil {
   804  		return x.PortList
   805  	}
   806  	return ""
   807  }
   808  
   809  func (x *SimplifiedRoutingRule) GetNetworks() *net.NetworkList {
   810  	if x != nil {
   811  		return x.Networks
   812  	}
   813  	return nil
   814  }
   815  
   816  func (x *SimplifiedRoutingRule) GetSourceGeoip() []*routercommon.GeoIP {
   817  	if x != nil {
   818  		return x.SourceGeoip
   819  	}
   820  	return nil
   821  }
   822  
   823  func (x *SimplifiedRoutingRule) GetSourcePortList() string {
   824  	if x != nil {
   825  		return x.SourcePortList
   826  	}
   827  	return ""
   828  }
   829  
   830  func (x *SimplifiedRoutingRule) GetUserEmail() []string {
   831  	if x != nil {
   832  		return x.UserEmail
   833  	}
   834  	return nil
   835  }
   836  
   837  func (x *SimplifiedRoutingRule) GetInboundTag() []string {
   838  	if x != nil {
   839  		return x.InboundTag
   840  	}
   841  	return nil
   842  }
   843  
   844  func (x *SimplifiedRoutingRule) GetProtocol() []string {
   845  	if x != nil {
   846  		return x.Protocol
   847  	}
   848  	return nil
   849  }
   850  
   851  func (x *SimplifiedRoutingRule) GetAttributes() string {
   852  	if x != nil {
   853  		return x.Attributes
   854  	}
   855  	return ""
   856  }
   857  
   858  func (x *SimplifiedRoutingRule) GetDomainMatcher() string {
   859  	if x != nil {
   860  		return x.DomainMatcher
   861  	}
   862  	return ""
   863  }
   864  
   865  func (x *SimplifiedRoutingRule) GetGeoDomain() []*routercommon.GeoSite {
   866  	if x != nil {
   867  		return x.GeoDomain
   868  	}
   869  	return nil
   870  }
   871  
   872  type isSimplifiedRoutingRule_TargetTag interface {
   873  	isSimplifiedRoutingRule_TargetTag()
   874  }
   875  
   876  type SimplifiedRoutingRule_Tag struct {
   877  	// Tag of outbound that this rule is pointing to.
   878  	Tag string `protobuf:"bytes,1,opt,name=tag,proto3,oneof"`
   879  }
   880  
   881  type SimplifiedRoutingRule_BalancingTag struct {
   882  	// Tag of routing balancer.
   883  	BalancingTag string `protobuf:"bytes,12,opt,name=balancing_tag,json=balancingTag,proto3,oneof"`
   884  }
   885  
   886  func (*SimplifiedRoutingRule_Tag) isSimplifiedRoutingRule_TargetTag() {}
   887  
   888  func (*SimplifiedRoutingRule_BalancingTag) isSimplifiedRoutingRule_TargetTag() {}
   889  
   890  type SimplifiedConfig struct {
   891  	state         protoimpl.MessageState
   892  	sizeCache     protoimpl.SizeCache
   893  	unknownFields protoimpl.UnknownFields
   894  
   895  	DomainStrategy DomainStrategy           `protobuf:"varint,1,opt,name=domain_strategy,json=domainStrategy,proto3,enum=v2ray.core.app.router.DomainStrategy" json:"domain_strategy,omitempty"`
   896  	Rule           []*SimplifiedRoutingRule `protobuf:"bytes,2,rep,name=rule,proto3" json:"rule,omitempty"`
   897  	BalancingRule  []*BalancingRule         `protobuf:"bytes,3,rep,name=balancing_rule,json=balancingRule,proto3" json:"balancing_rule,omitempty"`
   898  }
   899  
   900  func (x *SimplifiedConfig) Reset() {
   901  	*x = SimplifiedConfig{}
   902  	if protoimpl.UnsafeEnabled {
   903  		mi := &file_app_router_config_proto_msgTypes[8]
   904  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   905  		ms.StoreMessageInfo(mi)
   906  	}
   907  }
   908  
   909  func (x *SimplifiedConfig) String() string {
   910  	return protoimpl.X.MessageStringOf(x)
   911  }
   912  
   913  func (*SimplifiedConfig) ProtoMessage() {}
   914  
   915  func (x *SimplifiedConfig) ProtoReflect() protoreflect.Message {
   916  	mi := &file_app_router_config_proto_msgTypes[8]
   917  	if protoimpl.UnsafeEnabled && x != nil {
   918  		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
   919  		if ms.LoadMessageInfo() == nil {
   920  			ms.StoreMessageInfo(mi)
   921  		}
   922  		return ms
   923  	}
   924  	return mi.MessageOf(x)
   925  }
   926  
   927  // Deprecated: Use SimplifiedConfig.ProtoReflect.Descriptor instead.
   928  func (*SimplifiedConfig) Descriptor() ([]byte, []int) {
   929  	return file_app_router_config_proto_rawDescGZIP(), []int{8}
   930  }
   931  
   932  func (x *SimplifiedConfig) GetDomainStrategy() DomainStrategy {
   933  	if x != nil {
   934  		return x.DomainStrategy
   935  	}
   936  	return DomainStrategy_AsIs
   937  }
   938  
   939  func (x *SimplifiedConfig) GetRule() []*SimplifiedRoutingRule {
   940  	if x != nil {
   941  		return x.Rule
   942  	}
   943  	return nil
   944  }
   945  
   946  func (x *SimplifiedConfig) GetBalancingRule() []*BalancingRule {
   947  	if x != nil {
   948  		return x.BalancingRule
   949  	}
   950  	return nil
   951  }
   952  
   953  var File_app_router_config_proto protoreflect.FileDescriptor
   954  
   955  var file_app_router_config_proto_rawDesc = []byte{
   956  	0x0a, 0x17, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2f, 0x63, 0x6f, 0x6e,
   957  	0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x15, 0x76, 0x32, 0x72, 0x61, 0x79,
   958  	0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
   959  	0x1a, 0x19, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
   960  	0x66, 0x2f, 0x61, 0x6e, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x63, 0x6f, 0x6d,
   961  	0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f,
   962  	0x74, 0x6f, 0x1a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x6e,
   963  	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x63, 0x6f,
   964  	0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x65, 0x78, 0x74, 0x2f, 0x65, 0x78,
   965  	0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x24,
   966  	0x61, 0x70, 0x70, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65,
   967  	0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70,
   968  	0x72, 0x6f, 0x74, 0x6f, 0x22, 0x80, 0x08, 0x0a, 0x0b, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67,
   969  	0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28,
   970  	0x09, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x25, 0x0a, 0x0d, 0x62, 0x61, 0x6c, 0x61,
   971  	0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x48,
   972  	0x00, 0x52, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x61, 0x67, 0x12,
   973  	0x42, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32,
   974  	0x2a, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70,
   975  	0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x63, 0x6f,
   976  	0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x06, 0x64, 0x6f, 0x6d,
   977  	0x61, 0x69, 0x6e, 0x12, 0x40, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28,
   978  	0x0b, 0x32, 0x28, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61,
   979  	0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
   980  	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x49, 0x44, 0x52, 0x42, 0x02, 0x18, 0x01, 0x52,
   981  	0x04, 0x63, 0x69, 0x64, 0x72, 0x12, 0x3f, 0x0a, 0x05, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x18, 0x0a,
   982  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72,
   983  	0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x72, 0x6f, 0x75,
   984  	0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x52,
   985  	0x05, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x12, 0x43, 0x0a, 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72,
   986  	0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x76, 0x32, 0x72,
   987  	0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e,
   988  	0x65, 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x02, 0x18, 0x01,
   989  	0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x70,
   990  	0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f,
   991  	0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d,
   992  	0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52,
   993  	0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x49, 0x0a, 0x0c, 0x6e, 0x65, 0x74,
   994  	0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32,
   995  	0x22, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d,
   996  	0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c,
   997  	0x69, 0x73, 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b,
   998  	0x4c, 0x69, 0x73, 0x74, 0x12, 0x3a, 0x0a, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73,
   999  	0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1e, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63,
  1000  	0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e,
  1001  	0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73,
  1002  	0x12, 0x4d, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x69, 0x64, 0x72, 0x18,
  1003  	0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f,
  1004  	0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x72, 0x6f,
  1005  	0x75, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x43, 0x49, 0x44, 0x52, 0x42,
  1006  	0x02, 0x18, 0x01, 0x52, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x69, 0x64, 0x72, 0x12,
  1007  	0x4c, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x18,
  1008  	0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f,
  1009  	0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x72, 0x6f,
  1010  	0x75, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6f, 0x49, 0x50,
  1011  	0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6f, 0x69, 0x70, 0x12, 0x49, 0x0a,
  1012  	0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73,
  1013  	0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e,
  1014  	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e,
  1015  	0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0e, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65,
  1016  	0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72,
  1017  	0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73,
  1018  	0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x62, 0x6f, 0x75,
  1019  	0x6e, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e,
  1020  	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74,
  1021  	0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74,
  1022  	0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74,
  1023  	0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62,
  1024  	0x75, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6d,
  1025  	0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, 0x6f,
  1026  	0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x4c, 0x0a, 0x0a, 0x67,
  1027  	0x65, 0x6f, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0xa1, 0x93, 0x04, 0x20, 0x03, 0x28,
  1028  	0x0b, 0x32, 0x2b, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61,
  1029  	0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
  1030  	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x52, 0x09,
  1031  	0x67, 0x65, 0x6f, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x0c, 0x0a, 0x0a, 0x74, 0x61, 0x72,
  1032  	0x67, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x22, 0xd0, 0x01, 0x0a, 0x0d, 0x42, 0x61, 0x6c, 0x61,
  1033  	0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67,
  1034  	0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x2b, 0x0a, 0x11, 0x6f,
  1035  	0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72,
  1036  	0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64,
  1037  	0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61,
  1038  	0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61,
  1039  	0x74, 0x65, 0x67, 0x79, 0x12, 0x41, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79,
  1040  	0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32,
  1041  	0x14, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75,
  1042  	0x66, 0x2e, 0x41, 0x6e, 0x79, 0x52, 0x10, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x53,
  1043  	0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x6c, 0x6c, 0x62,
  1044  	0x61, 0x63, 0x6b, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66,
  1045  	0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x54, 0x61, 0x67, 0x22, 0x54, 0x0a, 0x0e, 0x53, 0x74,
  1046  	0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06,
  1047  	0x72, 0x65, 0x67, 0x65, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65,
  1048  	0x67, 0x65, 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20,
  1049  	0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61,
  1050  	0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65,
  1051  	0x22, 0x32, 0x0a, 0x14, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x61, 0x6e, 0x64,
  1052  	0x6f, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x3a, 0x1a, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x08,
  1053  	0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x82, 0xb5, 0x18, 0x08, 0x12, 0x06, 0x72, 0x61,
  1054  	0x6e, 0x64, 0x6f, 0x6d, 0x22, 0x5b, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79,
  1055  	0x4c, 0x65, 0x61, 0x73, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
  1056  	0x21, 0x0a, 0x0c, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x18,
  1057  	0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54,
  1058  	0x61, 0x67, 0x3a, 0x1d, 0x82, 0xb5, 0x18, 0x0a, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63,
  1059  	0x65, 0x72, 0x82, 0xb5, 0x18, 0x0b, 0x12, 0x09, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x70, 0x69, 0x6e,
  1060  	0x67, 0x22, 0x88, 0x02, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x4c, 0x65,
  1061  	0x61, 0x73, 0x74, 0x4c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a,
  1062  	0x05, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x76,
  1063  	0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f,
  1064  	0x75, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x57, 0x65, 0x69,
  1065  	0x67, 0x68, 0x74, 0x52, 0x05, 0x63, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61,
  1066  	0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x62,
  1067  	0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x65,
  1068  	0x63, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x08, 0x65, 0x78, 0x70, 0x65,
  1069  	0x63, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x78, 0x52, 0x54, 0x54, 0x18, 0x05,
  1070  	0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x78, 0x52, 0x54, 0x54, 0x12, 0x1c, 0x0a, 0x09,
  1071  	0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52,
  1072  	0x09, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x6f, 0x62,
  1073  	0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09,
  1074  	0x52, 0x0b, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x61, 0x67, 0x3a, 0x1d, 0x82,
  1075  	0xb5, 0x18, 0x0a, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x82, 0xb5, 0x18,
  1076  	0x0b, 0x12, 0x09, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0xdd, 0x01, 0x0a,
  1077  	0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4e, 0x0a, 0x0f, 0x64, 0x6f, 0x6d, 0x61, 0x69,
  1078  	0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e,
  1079  	0x32, 0x25, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70,
  1080  	0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53,
  1081  	0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53,
  1082  	0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x36, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18,
  1083  	0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f,
  1084  	0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f,
  1085  	0x75, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12,
  1086  	0x4b, 0x0a, 0x0e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c,
  1087  	0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e,
  1088  	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e,
  1089  	0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0d, 0x62,
  1090  	0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x22, 0xab, 0x05, 0x0a,
  1091  	0x15, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64, 0x52, 0x6f, 0x75, 0x74, 0x69,
  1092  	0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20,
  1093  	0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x25, 0x0a, 0x0d, 0x62, 0x61,
  1094  	0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28,
  1095  	0x09, 0x48, 0x00, 0x52, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x54, 0x61,
  1096  	0x67, 0x12, 0x42, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28,
  1097  	0x0b, 0x32, 0x2a, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61,
  1098  	0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
  1099  	0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x06, 0x64,
  1100  	0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x3f, 0x0a, 0x05, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x18, 0x0a,
  1101  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72,
  1102  	0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x72, 0x6f, 0x75,
  1103  	0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x52,
  1104  	0x05, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c,
  1105  	0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c,
  1106  	0x69, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18,
  1107  	0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f,
  1108  	0x72, 0x65, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65,
  1109  	0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f,
  1110  	0x72, 0x6b, 0x73, 0x12, 0x4c, 0x0a, 0x0c, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65,
  1111  	0x6f, 0x69, 0x70, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x76, 0x32, 0x72, 0x61,
  1112  	0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65,
  1113  	0x72, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47,
  1114  	0x65, 0x6f, 0x49, 0x50, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x47, 0x65, 0x6f, 0x69,
  1115  	0x70, 0x12, 0x28, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x70, 0x6f, 0x72, 0x74,
  1116  	0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x73, 0x6f, 0x75,
  1117  	0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75,
  1118  	0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52,
  1119  	0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e,
  1120  	0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52,
  1121  	0x0a, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70,
  1122  	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70,
  1123  	0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x1e, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69,
  1124  	0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x74, 0x74,
  1125  	0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x6d, 0x61, 0x69,
  1126  	0x6e, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52,
  1127  	0x0d, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x12, 0x4c,
  1128  	0x0a, 0x0a, 0x67, 0x65, 0x6f, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0xa1, 0x93, 0x04,
  1129  	0x20, 0x03, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72,
  1130  	0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x72, 0x6f, 0x75,
  1131  	0x74, 0x65, 0x72, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x47, 0x65, 0x6f, 0x53, 0x69, 0x74,
  1132  	0x65, 0x52, 0x09, 0x67, 0x65, 0x6f, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x0c, 0x0a, 0x0a,
  1133  	0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x22, 0x8c, 0x02, 0x0a, 0x10, 0x53,
  1134  	0x69, 0x6d, 0x70, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12,
  1135  	0x4e, 0x0a, 0x0f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65,
  1136  	0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79,
  1137  	0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72,
  1138  	0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52,
  1139  	0x0e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12,
  1140  	0x40, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e,
  1141  	0x76, 0x32, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72,
  1142  	0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x69, 0x6d, 0x70, 0x6c, 0x69, 0x66, 0x69, 0x65, 0x64,
  1143  	0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c,
  1144  	0x65, 0x12, 0x4b, 0x0a, 0x0e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x72,
  1145  	0x75, 0x6c, 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x76, 0x32, 0x72, 0x61,
  1146  	0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65,
  1147  	0x72, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x52,
  1148  	0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x3a, 0x19,
  1149  	0x82, 0xb5, 0x18, 0x09, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x82, 0xb5, 0x18,
  1150  	0x08, 0x12, 0x06, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2a, 0x47, 0x0a, 0x0e, 0x44, 0x6f, 0x6d,
  1151  	0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x08, 0x0a, 0x04, 0x41,
  1152  	0x73, 0x49, 0x73, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x49, 0x70, 0x10, 0x01,
  1153  	0x12, 0x10, 0x0a, 0x0c, 0x49, 0x70, 0x49, 0x66, 0x4e, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68,
  1154  	0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x49, 0x70, 0x4f, 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64,
  1155  	0x10, 0x03, 0x42, 0x60, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2e,
  1156  	0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x50,
  1157  	0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x32,
  1158  	0x66, 0x6c, 0x79, 0x2f, 0x76, 0x32, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x76,
  1159  	0x35, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0xaa, 0x02, 0x15, 0x56,
  1160  	0x32, 0x52, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x52, 0x6f,
  1161  	0x75, 0x74, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
  1162  }
  1163  
  1164  var (
  1165  	file_app_router_config_proto_rawDescOnce sync.Once
  1166  	file_app_router_config_proto_rawDescData = file_app_router_config_proto_rawDesc
  1167  )
  1168  
  1169  func file_app_router_config_proto_rawDescGZIP() []byte {
  1170  	file_app_router_config_proto_rawDescOnce.Do(func() {
  1171  		file_app_router_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_router_config_proto_rawDescData)
  1172  	})
  1173  	return file_app_router_config_proto_rawDescData
  1174  }
  1175  
  1176  var file_app_router_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
  1177  var file_app_router_config_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
  1178  var file_app_router_config_proto_goTypes = []interface{}{
  1179  	(DomainStrategy)(0),             // 0: v2ray.core.app.router.DomainStrategy
  1180  	(*RoutingRule)(nil),             // 1: v2ray.core.app.router.RoutingRule
  1181  	(*BalancingRule)(nil),           // 2: v2ray.core.app.router.BalancingRule
  1182  	(*StrategyWeight)(nil),          // 3: v2ray.core.app.router.StrategyWeight
  1183  	(*StrategyRandomConfig)(nil),    // 4: v2ray.core.app.router.StrategyRandomConfig
  1184  	(*StrategyLeastPingConfig)(nil), // 5: v2ray.core.app.router.StrategyLeastPingConfig
  1185  	(*StrategyLeastLoadConfig)(nil), // 6: v2ray.core.app.router.StrategyLeastLoadConfig
  1186  	(*Config)(nil),                  // 7: v2ray.core.app.router.Config
  1187  	(*SimplifiedRoutingRule)(nil),   // 8: v2ray.core.app.router.SimplifiedRoutingRule
  1188  	(*SimplifiedConfig)(nil),        // 9: v2ray.core.app.router.SimplifiedConfig
  1189  	(*routercommon.Domain)(nil),     // 10: v2ray.core.app.router.routercommon.Domain
  1190  	(*routercommon.CIDR)(nil),       // 11: v2ray.core.app.router.routercommon.CIDR
  1191  	(*routercommon.GeoIP)(nil),      // 12: v2ray.core.app.router.routercommon.GeoIP
  1192  	(*net.PortRange)(nil),           // 13: v2ray.core.common.net.PortRange
  1193  	(*net.PortList)(nil),            // 14: v2ray.core.common.net.PortList
  1194  	(*net.NetworkList)(nil),         // 15: v2ray.core.common.net.NetworkList
  1195  	(net.Network)(0),                // 16: v2ray.core.common.net.Network
  1196  	(*routercommon.GeoSite)(nil),    // 17: v2ray.core.app.router.routercommon.GeoSite
  1197  	(*anypb.Any)(nil),               // 18: google.protobuf.Any
  1198  }
  1199  var file_app_router_config_proto_depIdxs = []int32{
  1200  	10, // 0: v2ray.core.app.router.RoutingRule.domain:type_name -> v2ray.core.app.router.routercommon.Domain
  1201  	11, // 1: v2ray.core.app.router.RoutingRule.cidr:type_name -> v2ray.core.app.router.routercommon.CIDR
  1202  	12, // 2: v2ray.core.app.router.RoutingRule.geoip:type_name -> v2ray.core.app.router.routercommon.GeoIP
  1203  	13, // 3: v2ray.core.app.router.RoutingRule.port_range:type_name -> v2ray.core.common.net.PortRange
  1204  	14, // 4: v2ray.core.app.router.RoutingRule.port_list:type_name -> v2ray.core.common.net.PortList
  1205  	15, // 5: v2ray.core.app.router.RoutingRule.network_list:type_name -> v2ray.core.common.net.NetworkList
  1206  	16, // 6: v2ray.core.app.router.RoutingRule.networks:type_name -> v2ray.core.common.net.Network
  1207  	11, // 7: v2ray.core.app.router.RoutingRule.source_cidr:type_name -> v2ray.core.app.router.routercommon.CIDR
  1208  	12, // 8: v2ray.core.app.router.RoutingRule.source_geoip:type_name -> v2ray.core.app.router.routercommon.GeoIP
  1209  	14, // 9: v2ray.core.app.router.RoutingRule.source_port_list:type_name -> v2ray.core.common.net.PortList
  1210  	17, // 10: v2ray.core.app.router.RoutingRule.geo_domain:type_name -> v2ray.core.app.router.routercommon.GeoSite
  1211  	18, // 11: v2ray.core.app.router.BalancingRule.strategy_settings:type_name -> google.protobuf.Any
  1212  	3,  // 12: v2ray.core.app.router.StrategyLeastLoadConfig.costs:type_name -> v2ray.core.app.router.StrategyWeight
  1213  	0,  // 13: v2ray.core.app.router.Config.domain_strategy:type_name -> v2ray.core.app.router.DomainStrategy
  1214  	1,  // 14: v2ray.core.app.router.Config.rule:type_name -> v2ray.core.app.router.RoutingRule
  1215  	2,  // 15: v2ray.core.app.router.Config.balancing_rule:type_name -> v2ray.core.app.router.BalancingRule
  1216  	10, // 16: v2ray.core.app.router.SimplifiedRoutingRule.domain:type_name -> v2ray.core.app.router.routercommon.Domain
  1217  	12, // 17: v2ray.core.app.router.SimplifiedRoutingRule.geoip:type_name -> v2ray.core.app.router.routercommon.GeoIP
  1218  	15, // 18: v2ray.core.app.router.SimplifiedRoutingRule.networks:type_name -> v2ray.core.common.net.NetworkList
  1219  	12, // 19: v2ray.core.app.router.SimplifiedRoutingRule.source_geoip:type_name -> v2ray.core.app.router.routercommon.GeoIP
  1220  	17, // 20: v2ray.core.app.router.SimplifiedRoutingRule.geo_domain:type_name -> v2ray.core.app.router.routercommon.GeoSite
  1221  	0,  // 21: v2ray.core.app.router.SimplifiedConfig.domain_strategy:type_name -> v2ray.core.app.router.DomainStrategy
  1222  	8,  // 22: v2ray.core.app.router.SimplifiedConfig.rule:type_name -> v2ray.core.app.router.SimplifiedRoutingRule
  1223  	2,  // 23: v2ray.core.app.router.SimplifiedConfig.balancing_rule:type_name -> v2ray.core.app.router.BalancingRule
  1224  	24, // [24:24] is the sub-list for method output_type
  1225  	24, // [24:24] is the sub-list for method input_type
  1226  	24, // [24:24] is the sub-list for extension type_name
  1227  	24, // [24:24] is the sub-list for extension extendee
  1228  	0,  // [0:24] is the sub-list for field type_name
  1229  }
  1230  
  1231  func init() { file_app_router_config_proto_init() }
  1232  func file_app_router_config_proto_init() {
  1233  	if File_app_router_config_proto != nil {
  1234  		return
  1235  	}
  1236  	if !protoimpl.UnsafeEnabled {
  1237  		file_app_router_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
  1238  			switch v := v.(*RoutingRule); i {
  1239  			case 0:
  1240  				return &v.state
  1241  			case 1:
  1242  				return &v.sizeCache
  1243  			case 2:
  1244  				return &v.unknownFields
  1245  			default:
  1246  				return nil
  1247  			}
  1248  		}
  1249  		file_app_router_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
  1250  			switch v := v.(*BalancingRule); i {
  1251  			case 0:
  1252  				return &v.state
  1253  			case 1:
  1254  				return &v.sizeCache
  1255  			case 2:
  1256  				return &v.unknownFields
  1257  			default:
  1258  				return nil
  1259  			}
  1260  		}
  1261  		file_app_router_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
  1262  			switch v := v.(*StrategyWeight); i {
  1263  			case 0:
  1264  				return &v.state
  1265  			case 1:
  1266  				return &v.sizeCache
  1267  			case 2:
  1268  				return &v.unknownFields
  1269  			default:
  1270  				return nil
  1271  			}
  1272  		}
  1273  		file_app_router_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
  1274  			switch v := v.(*StrategyRandomConfig); i {
  1275  			case 0:
  1276  				return &v.state
  1277  			case 1:
  1278  				return &v.sizeCache
  1279  			case 2:
  1280  				return &v.unknownFields
  1281  			default:
  1282  				return nil
  1283  			}
  1284  		}
  1285  		file_app_router_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
  1286  			switch v := v.(*StrategyLeastPingConfig); i {
  1287  			case 0:
  1288  				return &v.state
  1289  			case 1:
  1290  				return &v.sizeCache
  1291  			case 2:
  1292  				return &v.unknownFields
  1293  			default:
  1294  				return nil
  1295  			}
  1296  		}
  1297  		file_app_router_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
  1298  			switch v := v.(*StrategyLeastLoadConfig); i {
  1299  			case 0:
  1300  				return &v.state
  1301  			case 1:
  1302  				return &v.sizeCache
  1303  			case 2:
  1304  				return &v.unknownFields
  1305  			default:
  1306  				return nil
  1307  			}
  1308  		}
  1309  		file_app_router_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
  1310  			switch v := v.(*Config); i {
  1311  			case 0:
  1312  				return &v.state
  1313  			case 1:
  1314  				return &v.sizeCache
  1315  			case 2:
  1316  				return &v.unknownFields
  1317  			default:
  1318  				return nil
  1319  			}
  1320  		}
  1321  		file_app_router_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} {
  1322  			switch v := v.(*SimplifiedRoutingRule); i {
  1323  			case 0:
  1324  				return &v.state
  1325  			case 1:
  1326  				return &v.sizeCache
  1327  			case 2:
  1328  				return &v.unknownFields
  1329  			default:
  1330  				return nil
  1331  			}
  1332  		}
  1333  		file_app_router_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} {
  1334  			switch v := v.(*SimplifiedConfig); i {
  1335  			case 0:
  1336  				return &v.state
  1337  			case 1:
  1338  				return &v.sizeCache
  1339  			case 2:
  1340  				return &v.unknownFields
  1341  			default:
  1342  				return nil
  1343  			}
  1344  		}
  1345  	}
  1346  	file_app_router_config_proto_msgTypes[0].OneofWrappers = []interface{}{
  1347  		(*RoutingRule_Tag)(nil),
  1348  		(*RoutingRule_BalancingTag)(nil),
  1349  	}
  1350  	file_app_router_config_proto_msgTypes[7].OneofWrappers = []interface{}{
  1351  		(*SimplifiedRoutingRule_Tag)(nil),
  1352  		(*SimplifiedRoutingRule_BalancingTag)(nil),
  1353  	}
  1354  	type x struct{}
  1355  	out := protoimpl.TypeBuilder{
  1356  		File: protoimpl.DescBuilder{
  1357  			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
  1358  			RawDescriptor: file_app_router_config_proto_rawDesc,
  1359  			NumEnums:      1,
  1360  			NumMessages:   9,
  1361  			NumExtensions: 0,
  1362  			NumServices:   0,
  1363  		},
  1364  		GoTypes:           file_app_router_config_proto_goTypes,
  1365  		DependencyIndexes: file_app_router_config_proto_depIdxs,
  1366  		EnumInfos:         file_app_router_config_proto_enumTypes,
  1367  		MessageInfos:      file_app_router_config_proto_msgTypes,
  1368  	}.Build()
  1369  	File_app_router_config_proto = out.File
  1370  	file_app_router_config_proto_rawDesc = nil
  1371  	file_app_router_config_proto_goTypes = nil
  1372  	file_app_router_config_proto_depIdxs = nil
  1373  }